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
3d07c1e7cb404b6a96d74f0c3cb7b0b4
0
e6bb8c694dc848d786aa9103a263880f
X
3d07c1e7cb404b6a96d74f0c3cb7b0b4--e6bb8c694dc848d786aa9103a263880f
71f52bc8625249b09873ef4c3cd7919a
1
155c57cf095e4b65832313c51959c4aa
e6bb8c694dc848d786aa9103a263880f--155c57cf095e4b65832313c51959c4aa
a4a67f21706b454b8541f546aa124d2d
42e05f500db444b8bb6ea8d54c3b2a59
Y
71f52bc8625249b09873ef4c3cd7919a--42e05f500db444b8bb6ea8d54c3b2a59
42e05f500db444b8bb6ea8d54c3b2a59--a4a67f21706b454b8541f546aa124d2d
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
fd510ad0c366428396ae39456b84ffc3
0
876ec52556084cb3bedb228a2fc10efa
X
fd510ad0c366428396ae39456b84ffc3--876ec52556084cb3bedb228a2fc10efa
e4058b20083344f6acf8e549391631b7
Y
876ec52556084cb3bedb228a2fc10efa--e4058b20083344f6acf8e549391631b7
a5ab1e000ab849b09807cf4fdcba737c
e4058b20083344f6acf8e549391631b7--a5ab1e000ab849b09807cf4fdcba737c
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
4b6fb5f3e6d144bdbc730c11ceca48c0
0
535e0f9b60874f16aae71e07a17d2213
X
4b6fb5f3e6d144bdbc730c11ceca48c0--535e0f9b60874f16aae71e07a17d2213
29fdacc9ea634cec80f25585793fdc8e
1
859ec9590024420d9bc467183742e03a
535e0f9b60874f16aae71e07a17d2213--859ec9590024420d9bc467183742e03a
b1cb24ab52394da989ab970b649e53c2
859ec9590024420d9bc467183742e03a--b1cb24ab52394da989ab970b649e53c2
b957ad07d82348899a1edacd0a37f171
ce5e604622a4446c8890c8e198629e07
29fdacc9ea634cec80f25585793fdc8e--ce5e604622a4446c8890c8e198629e07
2ab6eb1405244b6bb5ba47774b0733b8
Y
ce5e604622a4446c8890c8e198629e07--2ab6eb1405244b6bb5ba47774b0733b8
2ab6eb1405244b6bb5ba47774b0733b8--b957ad07d82348899a1edacd0a37f171
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_c57ca32ba53d4b4eaaa9089f0336a014
f5dd5e4f14924310a4451ca23859a930
0
a27b13a1036c419b9e1c07cdcba7cbeb
f5dd5e4f14924310a4451ca23859a930--a27b13a1036c419b9e1c07cdcba7cbeb
1309c050141b4ca69720178f62ba4f14
1
d2d6bc11c6e4479bb3c4391d993effa1
a27b13a1036c419b9e1c07cdcba7cbeb--d2d6bc11c6e4479bb3c4391d993effa1
4ad3667e46ca40ecaeab8aa730fb1a10
2005c7248cc64a808c340f764e9b5596
AddBlock
1309c050141b4ca69720178f62ba4f14--2005c7248cc64a808c340f764e9b5596
b2fb75c71a484b23b93d52299c926a51
2
2005c7248cc64a808c340f764e9b5596--4ad3667e46ca40ecaeab8aa730fb1a10
a69e56d6467046649a66af8db18c830b
e40cfa599fde4f538415bfb214ba65b3
b2fb75c71a484b23b93d52299c926a51--e40cfa599fde4f538415bfb214ba65b3
e40cfa599fde4f538415bfb214ba65b3--a69e56d6467046649a66af8db18c830b
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_5304d8ab889f47ea9a9b7c5f2c9b4541
cluster_fdc8c96124044971adc25a5e58df4d17
rx
62658d870651478193700ea94bb82649
0
59373b3059764be09188acd925f90658
X
62658d870651478193700ea94bb82649--59373b3059764be09188acd925f90658
5a558d75bd58432e820f94568d8cbd0f
1
889583dbdd6141c0a25e24683b3d6bba
59373b3059764be09188acd925f90658--889583dbdd6141c0a25e24683b3d6bba
1cc4ee58d43b4116b356f9c9d5520426
889583dbdd6141c0a25e24683b3d6bba--1cc4ee58d43b4116b356f9c9d5520426
897f5f1d01b84caa9647dd87069fc697
1cc4ee58d43b4116b356f9c9d5520426--897f5f1d01b84caa9647dd87069fc697
e4c481898a1840738048b2ccab12822c
28fba9184dea4d5fb0641e941ef4514b
Y
5a558d75bd58432e820f94568d8cbd0f--28fba9184dea4d5fb0641e941ef4514b
ab7eff44a5d74effb625ca78e8c91d8a
2
d12481ef1d9b46da932a6a4e0c8707ea
28fba9184dea4d5fb0641e941ef4514b--d12481ef1d9b46da932a6a4e0c8707ea
35854e6412e44051b27e784fa7cc3896
HamEvo
d12481ef1d9b46da932a6a4e0c8707ea--35854e6412e44051b27e784fa7cc3896
35854e6412e44051b27e784fa7cc3896--e4c481898a1840738048b2ccab12822c
fdf9f1d639df41d5b6cf2d2ee79f6592
d39e616cc75f4f80b44bb3ad3d515b0a
RX(x)
ab7eff44a5d74effb625ca78e8c91d8a--d39e616cc75f4f80b44bb3ad3d515b0a
7d73ee7a0d7d4bcb809f86c34a739810
3
b83dc52c4279480ba405637668d73bf5
d39e616cc75f4f80b44bb3ad3d515b0a--b83dc52c4279480ba405637668d73bf5
42027dedd27b41748b68d65222ffc13a
t = 10
b83dc52c4279480ba405637668d73bf5--42027dedd27b41748b68d65222ffc13a
42027dedd27b41748b68d65222ffc13a--fdf9f1d639df41d5b6cf2d2ee79f6592
a8a2101f584c4bf5a89124264dd0a0e3
1ae5e5249a4a4ffa953e5c69fd39f227
RX(0.5)
7d73ee7a0d7d4bcb809f86c34a739810--1ae5e5249a4a4ffa953e5c69fd39f227
322e64120e1049ffa2261d1557695f23
X
1ae5e5249a4a4ffa953e5c69fd39f227--322e64120e1049ffa2261d1557695f23
322e64120e1049ffa2261d1557695f23--b83dc52c4279480ba405637668d73bf5
0fc5b747ebaf46c78e601f182b040726
322e64120e1049ffa2261d1557695f23--0fc5b747ebaf46c78e601f182b040726
0fc5b747ebaf46c78e601f182b040726--a8a2101f584c4bf5a89124264dd0a0e3
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_74bd7fcff075461bb3ee168c675833f2
HEA
cluster_ca3fc097c2d244ab9586371387df460e
Tower Fourier FM
3890ee87f0e54358bd0cbbedadffd9de
0
eda5a51635c34c658343796bbb58e6c9
RX(1.0*phi)
3890ee87f0e54358bd0cbbedadffd9de--eda5a51635c34c658343796bbb58e6c9
1948ea3d0d0f489d9e82104aed254835
1
022a04fbe723427f9c7e2a9ffef4706f
RX(theta₀)
eda5a51635c34c658343796bbb58e6c9--022a04fbe723427f9c7e2a9ffef4706f
f4af52a9fc044009bf7a73103e05b62a
RY(theta₄)
022a04fbe723427f9c7e2a9ffef4706f--f4af52a9fc044009bf7a73103e05b62a
8659ca5ffaf64e7bb4b6f10159c730f5
RX(theta₈)
f4af52a9fc044009bf7a73103e05b62a--8659ca5ffaf64e7bb4b6f10159c730f5
466fab19d5124c20a17dfb292a5479f0
8659ca5ffaf64e7bb4b6f10159c730f5--466fab19d5124c20a17dfb292a5479f0
952ac03323b149d79ed08055febb3ee8
466fab19d5124c20a17dfb292a5479f0--952ac03323b149d79ed08055febb3ee8
c5e87a28f9a442db880ebc0938b60d18
RX(theta₁₂)
952ac03323b149d79ed08055febb3ee8--c5e87a28f9a442db880ebc0938b60d18
f032fc97876b4d9ba0fce97a7ed59db7
RY(theta₁₆)
c5e87a28f9a442db880ebc0938b60d18--f032fc97876b4d9ba0fce97a7ed59db7
71e1128c49db425a86e567acdadadda3
RX(theta₂₀)
f032fc97876b4d9ba0fce97a7ed59db7--71e1128c49db425a86e567acdadadda3
0cc0880aae0f47e18ec31338d1303399
71e1128c49db425a86e567acdadadda3--0cc0880aae0f47e18ec31338d1303399
5e745ae6a3f440589f569610b3baf481
0cc0880aae0f47e18ec31338d1303399--5e745ae6a3f440589f569610b3baf481
b4710cd8fff24f42bef76d054ceaf2f6
5e745ae6a3f440589f569610b3baf481--b4710cd8fff24f42bef76d054ceaf2f6
c54ed55f885a4f539a254262c32c6080
0d8b0b1c354042599e053b770c815a24
RX(2.0*phi)
1948ea3d0d0f489d9e82104aed254835--0d8b0b1c354042599e053b770c815a24
099a88a8dca540f8a670551ed017e463
2
9fecde249cd74e72ad5e1c0400fbda0f
RX(theta₁)
0d8b0b1c354042599e053b770c815a24--9fecde249cd74e72ad5e1c0400fbda0f
0f44bc7c2b6945a68d3c7f6acb670be4
RY(theta₅)
9fecde249cd74e72ad5e1c0400fbda0f--0f44bc7c2b6945a68d3c7f6acb670be4
47f33de7cf00468c913cfdfb21c8155d
RX(theta₉)
0f44bc7c2b6945a68d3c7f6acb670be4--47f33de7cf00468c913cfdfb21c8155d
431762bf108c45be9e855c4f593735a5
X
47f33de7cf00468c913cfdfb21c8155d--431762bf108c45be9e855c4f593735a5
431762bf108c45be9e855c4f593735a5--466fab19d5124c20a17dfb292a5479f0
d6404054778b452db959ad164fbc5589
431762bf108c45be9e855c4f593735a5--d6404054778b452db959ad164fbc5589
070322c02354421fbf69d38c1d521ff5
RX(theta₁₃)
d6404054778b452db959ad164fbc5589--070322c02354421fbf69d38c1d521ff5
edde4625b84c4abbb9dbb79f96e34392
RY(theta₁₇)
070322c02354421fbf69d38c1d521ff5--edde4625b84c4abbb9dbb79f96e34392
f24c5f15c820460282e40a7dda093298
RX(theta₂₁)
edde4625b84c4abbb9dbb79f96e34392--f24c5f15c820460282e40a7dda093298
28f57a64279940959e976522dba443b8
X
f24c5f15c820460282e40a7dda093298--28f57a64279940959e976522dba443b8
28f57a64279940959e976522dba443b8--0cc0880aae0f47e18ec31338d1303399
0ddda6e2f40d4d8aaaee6785dabb3a82
28f57a64279940959e976522dba443b8--0ddda6e2f40d4d8aaaee6785dabb3a82
0ddda6e2f40d4d8aaaee6785dabb3a82--c54ed55f885a4f539a254262c32c6080
0f51ba6ee83d4be5bd729f91928b6e0a
9dbe25f5483a4e4fb2c7a3361da378aa
RX(3.0*phi)
099a88a8dca540f8a670551ed017e463--9dbe25f5483a4e4fb2c7a3361da378aa
f7d1ba50c31642a89acc9aae31c3e190
3
aaff50e14cda4e1cb6e12a60c5cb9c31
RX(theta₂)
9dbe25f5483a4e4fb2c7a3361da378aa--aaff50e14cda4e1cb6e12a60c5cb9c31
54547ef8f28e4d9689f54e5b66dcdabb
RY(theta₆)
aaff50e14cda4e1cb6e12a60c5cb9c31--54547ef8f28e4d9689f54e5b66dcdabb
4a2afbc41c9b4854afbc4214f6871725
RX(theta₁₀)
54547ef8f28e4d9689f54e5b66dcdabb--4a2afbc41c9b4854afbc4214f6871725
ac07a6959b8644a692c8d4ae2e874957
4a2afbc41c9b4854afbc4214f6871725--ac07a6959b8644a692c8d4ae2e874957
fe541c6864e046b3a4b180d63eafc608
X
ac07a6959b8644a692c8d4ae2e874957--fe541c6864e046b3a4b180d63eafc608
fe541c6864e046b3a4b180d63eafc608--d6404054778b452db959ad164fbc5589
65fe5a9661674560a663914b6270514f
RX(theta₁₄)
fe541c6864e046b3a4b180d63eafc608--65fe5a9661674560a663914b6270514f
a16c9533507b4fba9fb9501eddf73c14
RY(theta₁₈)
65fe5a9661674560a663914b6270514f--a16c9533507b4fba9fb9501eddf73c14
bfcd102dee814d39821477c8ebce12fc
RX(theta₂₂)
a16c9533507b4fba9fb9501eddf73c14--bfcd102dee814d39821477c8ebce12fc
957eef891ad5412c992495ce4af4357e
bfcd102dee814d39821477c8ebce12fc--957eef891ad5412c992495ce4af4357e
ad492b8076194d55b88d5d892f751691
X
957eef891ad5412c992495ce4af4357e--ad492b8076194d55b88d5d892f751691
ad492b8076194d55b88d5d892f751691--0ddda6e2f40d4d8aaaee6785dabb3a82
ad492b8076194d55b88d5d892f751691--0f51ba6ee83d4be5bd729f91928b6e0a
648f43eae4c249708417f8dc6281aa70
ca99690cb74a4bf3a9d130d7a1d7481e
RX(4.0*phi)
f7d1ba50c31642a89acc9aae31c3e190--ca99690cb74a4bf3a9d130d7a1d7481e
3e0c167174e244f89dd47a6dad5e5628
RX(theta₃)
ca99690cb74a4bf3a9d130d7a1d7481e--3e0c167174e244f89dd47a6dad5e5628
cbc2cf6448ff41a0b756873f21efce33
RY(theta₇)
3e0c167174e244f89dd47a6dad5e5628--cbc2cf6448ff41a0b756873f21efce33
27043833fac242f0a08387bda091f1c9
RX(theta₁₁)
cbc2cf6448ff41a0b756873f21efce33--27043833fac242f0a08387bda091f1c9
10a197a90fa7433b96511eb540a463a2
X
27043833fac242f0a08387bda091f1c9--10a197a90fa7433b96511eb540a463a2
10a197a90fa7433b96511eb540a463a2--ac07a6959b8644a692c8d4ae2e874957
932f10190c2c40a290ddab2bbce0f442
10a197a90fa7433b96511eb540a463a2--932f10190c2c40a290ddab2bbce0f442
245986b4464a4c86939ac1a1cecc092d
RX(theta₁₅)
932f10190c2c40a290ddab2bbce0f442--245986b4464a4c86939ac1a1cecc092d
01265f7c02004e4cbe704660bc3ff438
RY(theta₁₉)
245986b4464a4c86939ac1a1cecc092d--01265f7c02004e4cbe704660bc3ff438
d1032cfcd8844a10bc952010e5ae5759
RX(theta₂₃)
01265f7c02004e4cbe704660bc3ff438--d1032cfcd8844a10bc952010e5ae5759
64897b9cb7cd4d13b98d04fe63393f4c
X
d1032cfcd8844a10bc952010e5ae5759--64897b9cb7cd4d13b98d04fe63393f4c
64897b9cb7cd4d13b98d04fe63393f4c--957eef891ad5412c992495ce4af4357e
7fe7f4f902714d75bd5a9b8e5d79bbea
64897b9cb7cd4d13b98d04fe63393f4c--7fe7f4f902714d75bd5a9b8e5d79bbea
7fe7f4f902714d75bd5a9b8e5d79bbea--648f43eae4c249708417f8dc6281aa70
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_ba682810706b41b4aa4b87b6b3ab1dd0
Obs.
cluster_77cb06abd1404754b8d5536b73ee274e
cluster_10dd6727496e480b980e1964bc2254bd
HEA
637825673e74477eb51dc8dd64240d10
0
7daa3a45ba81435b9aee99bf55db3842
RX(theta₀)
637825673e74477eb51dc8dd64240d10--7daa3a45ba81435b9aee99bf55db3842
e9f13f2cdebd459bb1fb59fa967881b9
1
c5296099a36e4333ae9495f1ce5cb6bc
RY(theta₃)
7daa3a45ba81435b9aee99bf55db3842--c5296099a36e4333ae9495f1ce5cb6bc
33f191348181445cae53cab74a8c872f
RX(theta₆)
c5296099a36e4333ae9495f1ce5cb6bc--33f191348181445cae53cab74a8c872f
90fe177df3424b1885415d1f0ace8ddd
33f191348181445cae53cab74a8c872f--90fe177df3424b1885415d1f0ace8ddd
c7e16b4c3d0140229d8aa73a4d7da9ee
90fe177df3424b1885415d1f0ace8ddd--c7e16b4c3d0140229d8aa73a4d7da9ee
dec6c69f137046b6b6ba1f8f10086a82
RX(theta₉)
c7e16b4c3d0140229d8aa73a4d7da9ee--dec6c69f137046b6b6ba1f8f10086a82
12e200f83ae54eb59ba871d67346b3a2
RY(theta₁₂)
dec6c69f137046b6b6ba1f8f10086a82--12e200f83ae54eb59ba871d67346b3a2
de24ff96ed984fe2abd7702bf0ec11b9
RX(theta₁₅)
12e200f83ae54eb59ba871d67346b3a2--de24ff96ed984fe2abd7702bf0ec11b9
f160108657fe40f895f85aa69c6d52f1
de24ff96ed984fe2abd7702bf0ec11b9--f160108657fe40f895f85aa69c6d52f1
c2cc737b5ed744589d829f8af0fb2559
f160108657fe40f895f85aa69c6d52f1--c2cc737b5ed744589d829f8af0fb2559
d70f2c6d040b40a092d2d0734e505850
c2cc737b5ed744589d829f8af0fb2559--d70f2c6d040b40a092d2d0734e505850
3b0a256bbe2d4617a2bd317289a0d8ff
d70f2c6d040b40a092d2d0734e505850--3b0a256bbe2d4617a2bd317289a0d8ff
b85b22e23478435fb37052d030120e7c
dea62a5b9897489a877277884c21010a
RX(theta₁)
e9f13f2cdebd459bb1fb59fa967881b9--dea62a5b9897489a877277884c21010a
4034da0d4cb044ed8415050f14e8b932
2
6fab89b0765441d5a495b265bcc9c359
RY(theta₄)
dea62a5b9897489a877277884c21010a--6fab89b0765441d5a495b265bcc9c359
a2c09c191df1484da59df6bcd24eae8a
RX(theta₇)
6fab89b0765441d5a495b265bcc9c359--a2c09c191df1484da59df6bcd24eae8a
b8a4415eeae840d2855823faaa42edb7
X
a2c09c191df1484da59df6bcd24eae8a--b8a4415eeae840d2855823faaa42edb7
b8a4415eeae840d2855823faaa42edb7--90fe177df3424b1885415d1f0ace8ddd
35703398ae7b4ef3b19cb158de4470a8
b8a4415eeae840d2855823faaa42edb7--35703398ae7b4ef3b19cb158de4470a8
c2214dc35cae410ab472f48483f28059
RX(theta₁₀)
35703398ae7b4ef3b19cb158de4470a8--c2214dc35cae410ab472f48483f28059
6f31b0ccdbd4482a8de89eadfb558779
RY(theta₁₃)
c2214dc35cae410ab472f48483f28059--6f31b0ccdbd4482a8de89eadfb558779
bee2756973fa4fb4b7e7cc0336038ab5
RX(theta₁₆)
6f31b0ccdbd4482a8de89eadfb558779--bee2756973fa4fb4b7e7cc0336038ab5
cb2d4ef50bff4fe3a55906e3267ee090
X
bee2756973fa4fb4b7e7cc0336038ab5--cb2d4ef50bff4fe3a55906e3267ee090
cb2d4ef50bff4fe3a55906e3267ee090--f160108657fe40f895f85aa69c6d52f1
ce873e1cb85c46a49a8b6627f964652c
cb2d4ef50bff4fe3a55906e3267ee090--ce873e1cb85c46a49a8b6627f964652c
3b8cd1c244a14636889944c067d12a75
AddBlock
ce873e1cb85c46a49a8b6627f964652c--3b8cd1c244a14636889944c067d12a75
3b8cd1c244a14636889944c067d12a75--b85b22e23478435fb37052d030120e7c
9c1fae7f27de4843ac440c1052ade824
a0dbb750735f4c17afd26af9053186ba
RX(theta₂)
4034da0d4cb044ed8415050f14e8b932--a0dbb750735f4c17afd26af9053186ba
f3bec43afa62475daef0baf5b389b237
RY(theta₅)
a0dbb750735f4c17afd26af9053186ba--f3bec43afa62475daef0baf5b389b237
3d151fa8142a47e49ae57d37bb9d8ce9
RX(theta₈)
f3bec43afa62475daef0baf5b389b237--3d151fa8142a47e49ae57d37bb9d8ce9
29417644367c43dcb0157eaa13047bdd
3d151fa8142a47e49ae57d37bb9d8ce9--29417644367c43dcb0157eaa13047bdd
6214308842f74fc988f71a71a821d199
X
29417644367c43dcb0157eaa13047bdd--6214308842f74fc988f71a71a821d199
6214308842f74fc988f71a71a821d199--35703398ae7b4ef3b19cb158de4470a8
75e6a4f070ab4c60b9ceef440b311960
RX(theta₁₁)
6214308842f74fc988f71a71a821d199--75e6a4f070ab4c60b9ceef440b311960
41e5f68323d34559849a6c123609c6b7
RY(theta₁₄)
75e6a4f070ab4c60b9ceef440b311960--41e5f68323d34559849a6c123609c6b7
8c28aba4673046a38bfab8a3d5878d08
RX(theta₁₇)
41e5f68323d34559849a6c123609c6b7--8c28aba4673046a38bfab8a3d5878d08
78e8d709a32241e19acc15a1c3db793c
8c28aba4673046a38bfab8a3d5878d08--78e8d709a32241e19acc15a1c3db793c
6a4a25efa8f744218f02af54fcddb47c
X
78e8d709a32241e19acc15a1c3db793c--6a4a25efa8f744218f02af54fcddb47c
6a4a25efa8f744218f02af54fcddb47c--ce873e1cb85c46a49a8b6627f964652c
c4802cc1d1a34d3982b6352682a41342
6a4a25efa8f744218f02af54fcddb47c--c4802cc1d1a34d3982b6352682a41342
c4802cc1d1a34d3982b6352682a41342--9c1fae7f27de4843ac440c1052ade824
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
8ac79d1da7b241789eaa9fc03e1de629
0
15da6b08f7844c01a3f73924ea838967
8ac79d1da7b241789eaa9fc03e1de629--15da6b08f7844c01a3f73924ea838967
810498861e8248b1860c446d7415ef4a
1
5b4838a5e3d74f6e98ef3671ce79d1f7
938948726da1479799ad007e5f177230
15da6b08f7844c01a3f73924ea838967--938948726da1479799ad007e5f177230
cbae9a5c012a400b84b9e59adf0641e6
5b4838a5e3d74f6e98ef3671ce79d1f7--cbae9a5c012a400b84b9e59adf0641e6
5151090f7a734156a1ecfab175a87bf1
f8296935488b4e31b418c0f14448238d
cbae9a5c012a400b84b9e59adf0641e6--f8296935488b4e31b418c0f14448238d
3bcfc1fdbd31417ea1090da388af78a2
5151090f7a734156a1ecfab175a87bf1--3bcfc1fdbd31417ea1090da388af78a2
3571f4ed9c7f4fb087b3756a192e55b8
5c35c4359c3f4dea849d8c113c84b013
810498861e8248b1860c446d7415ef4a--5c35c4359c3f4dea849d8c113c84b013
f2dc088a0641451d87a7b78a11b3c859
2
5c35c4359c3f4dea849d8c113c84b013--5b4838a5e3d74f6e98ef3671ce79d1f7
e720e6b39c6a47f6815eb0f802532cc1
938948726da1479799ad007e5f177230--e720e6b39c6a47f6815eb0f802532cc1
247e7c7a841a4d8e90000101c1e7c6b8
e720e6b39c6a47f6815eb0f802532cc1--247e7c7a841a4d8e90000101c1e7c6b8
247e7c7a841a4d8e90000101c1e7c6b8--3571f4ed9c7f4fb087b3756a192e55b8
0b309ae3fff146fa8230f7426ed130d4
ca02ac39a0d94d7ba000ee48012594da
f2dc088a0641451d87a7b78a11b3c859--ca02ac39a0d94d7ba000ee48012594da
eb92721ffbc944d6826fd8d2b9b8e48a
3
96304f5cb73f4137878d600daf9419f1
ca02ac39a0d94d7ba000ee48012594da--96304f5cb73f4137878d600daf9419f1
1e495d428bf14379b24ea3a822f9cb29
96304f5cb73f4137878d600daf9419f1--1e495d428bf14379b24ea3a822f9cb29
2876476f99f74ed48aa657704dbda98a
1e495d428bf14379b24ea3a822f9cb29--2876476f99f74ed48aa657704dbda98a
2876476f99f74ed48aa657704dbda98a--0b309ae3fff146fa8230f7426ed130d4
958963c2eea84be0a8316dc2fa4ca133
bd30c4596fb44f53b7ccdee155c6a8f7
eb92721ffbc944d6826fd8d2b9b8e48a--bd30c4596fb44f53b7ccdee155c6a8f7
72f9a0a8c4fb41b1bd7761834ce1af53
bd30c4596fb44f53b7ccdee155c6a8f7--72f9a0a8c4fb41b1bd7761834ce1af53
23c8f74ee7ac49f9b23f3b8d88c04722
72f9a0a8c4fb41b1bd7761834ce1af53--23c8f74ee7ac49f9b23f3b8d88c04722
23c8f74ee7ac49f9b23f3b8d88c04722--5151090f7a734156a1ecfab175a87bf1
f8296935488b4e31b418c0f14448238d--958963c2eea84be0a8316dc2fa4ca133
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
cc5ecb704492478cbe80558097334fb0
0
9f8b64ccb6f749009ec55fe6c85fd1e2
cc5ecb704492478cbe80558097334fb0--9f8b64ccb6f749009ec55fe6c85fd1e2
0a404df8d0364429b723df24db2051f8
1
0e07b5a9289e4e25ba5c4f9e4a712dc2
9f8b64ccb6f749009ec55fe6c85fd1e2--0e07b5a9289e4e25ba5c4f9e4a712dc2
f2e4bc4f7c814275a938d1ac8ada7fc2
0e07b5a9289e4e25ba5c4f9e4a712dc2--f2e4bc4f7c814275a938d1ac8ada7fc2
6947e9a9be6a452ab396b03616a2d38e
f2e4bc4f7c814275a938d1ac8ada7fc2--6947e9a9be6a452ab396b03616a2d38e
492ee8a99057423b93e3a8b33f2ed75f
4883c2b0c0954b129144a1c2b28debe7
PHASE(0.5)
0a404df8d0364429b723df24db2051f8--4883c2b0c0954b129144a1c2b28debe7
29e6fab497e64d50b8e1194a0e644b4b
2
4883c2b0c0954b129144a1c2b28debe7--9f8b64ccb6f749009ec55fe6c85fd1e2
d46ac3021cd74e5292759ef7cf558ee8
4883c2b0c0954b129144a1c2b28debe7--d46ac3021cd74e5292759ef7cf558ee8
b8b37cea322b444f99173328fa73b4d9
d46ac3021cd74e5292759ef7cf558ee8--b8b37cea322b444f99173328fa73b4d9
b8b37cea322b444f99173328fa73b4d9--492ee8a99057423b93e3a8b33f2ed75f
3683bb24ae514ed5bf72ec5e98e36dfe
f8f32fae4aea4a8e99176ccdd2255915
29e6fab497e64d50b8e1194a0e644b4b--f8f32fae4aea4a8e99176ccdd2255915
8f0c4a7b99654d48bbd867d9aaf17d17
3
3ac07d95f0c547e0988963597b9a456d
PHASE(0.5)
f8f32fae4aea4a8e99176ccdd2255915--3ac07d95f0c547e0988963597b9a456d
3ac07d95f0c547e0988963597b9a456d--0e07b5a9289e4e25ba5c4f9e4a712dc2
34e33be4dadb4f0b8794a0557f058000
3ac07d95f0c547e0988963597b9a456d--34e33be4dadb4f0b8794a0557f058000
34e33be4dadb4f0b8794a0557f058000--3683bb24ae514ed5bf72ec5e98e36dfe
cfbe24ca391f4a71866c84fb309c2783
b811a95e36114855b64ce00e2485d527
8f0c4a7b99654d48bbd867d9aaf17d17--b811a95e36114855b64ce00e2485d527
864a4cd2e83147759077a8cb7c0bd326
b811a95e36114855b64ce00e2485d527--864a4cd2e83147759077a8cb7c0bd326
c1476f71b6ef49e0b7e2a6465f469016
PHASE(0.5)
864a4cd2e83147759077a8cb7c0bd326--c1476f71b6ef49e0b7e2a6465f469016
c1476f71b6ef49e0b7e2a6465f469016--f2e4bc4f7c814275a938d1ac8ada7fc2
c1476f71b6ef49e0b7e2a6465f469016--cfbe24ca391f4a71866c84fb309c2783
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