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
50c403964e6843119cc0dbc8bef81f9e
0
19a1591486374c20902390f465a9e3fa
X
50c403964e6843119cc0dbc8bef81f9e--19a1591486374c20902390f465a9e3fa
e9090102f535444583a56ccea15c18ed
1
7b7ecd9a20bd496095599069d1583bc4
19a1591486374c20902390f465a9e3fa--7b7ecd9a20bd496095599069d1583bc4
e779e02bcd4c4c87acaee5e8146b1f13
9af2bdcb0c8047c5b94f4dfa3d35d2ea
Y
e9090102f535444583a56ccea15c18ed--9af2bdcb0c8047c5b94f4dfa3d35d2ea
9af2bdcb0c8047c5b94f4dfa3d35d2ea--e779e02bcd4c4c87acaee5e8146b1f13
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
2c534d7f4f584def88bc0a98d67828e9
0
07f84947b2774d0c8c922fd7d0bee095
X
2c534d7f4f584def88bc0a98d67828e9--07f84947b2774d0c8c922fd7d0bee095
4c87edf81f334d2ea434c7880645fe12
Y
07f84947b2774d0c8c922fd7d0bee095--4c87edf81f334d2ea434c7880645fe12
caed2d807511468e963adbc3ee004dd8
4c87edf81f334d2ea434c7880645fe12--caed2d807511468e963adbc3ee004dd8
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
fb47e6e35c62438fa3656d26b1db09aa
0
bb432143812b4c8c9c3b32f5f9d873ae
X
fb47e6e35c62438fa3656d26b1db09aa--bb432143812b4c8c9c3b32f5f9d873ae
69cee1ff148c4388a7890052a68d14a2
1
efc060108db24ab082eeebe49cd71c3f
bb432143812b4c8c9c3b32f5f9d873ae--efc060108db24ab082eeebe49cd71c3f
7265e2feb15542abaa84d80ec653cd7d
efc060108db24ab082eeebe49cd71c3f--7265e2feb15542abaa84d80ec653cd7d
d160378bb91c45caa19855dfc49b8f5b
02844f3c6f764f84b25f6ed571e6eb73
69cee1ff148c4388a7890052a68d14a2--02844f3c6f764f84b25f6ed571e6eb73
11159f669313417d9fe72e660b916a80
Y
02844f3c6f764f84b25f6ed571e6eb73--11159f669313417d9fe72e660b916a80
11159f669313417d9fe72e660b916a80--d160378bb91c45caa19855dfc49b8f5b
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_e6282e4f9e2c493d9deb28cae7ae5dcb
a5b21c2d1426465b9969767558959dbf
0
88d4fd5f374c4d908b39169c5da2fbbd
a5b21c2d1426465b9969767558959dbf--88d4fd5f374c4d908b39169c5da2fbbd
dd706c1fa1f0467087c571213cedfe1a
1
f9f136f62b384723a849d99b11cdd6f2
88d4fd5f374c4d908b39169c5da2fbbd--f9f136f62b384723a849d99b11cdd6f2
2707320ed7ca453ea66b0453d0fe4b94
5c28b4d88abf4fb388c5e834d2d99d90
AddBlock
dd706c1fa1f0467087c571213cedfe1a--5c28b4d88abf4fb388c5e834d2d99d90
4954b2ea53b745b8b3638e8cb8f42dd3
2
5c28b4d88abf4fb388c5e834d2d99d90--2707320ed7ca453ea66b0453d0fe4b94
13af9aeec43d48f09a956d38daad6d2d
8d3161c98b544aafbddf3b1e6b4fbd41
4954b2ea53b745b8b3638e8cb8f42dd3--8d3161c98b544aafbddf3b1e6b4fbd41
8d3161c98b544aafbddf3b1e6b4fbd41--13af9aeec43d48f09a956d38daad6d2d
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_3683319adb3d4ff7b743caff54b6d649
cluster_efc920e63d124e82a0c5785f74fe6ba7
rx
eebc987c842540d59498023cfe4e1bab
0
32292123aada45fcab960710316649e2
X
eebc987c842540d59498023cfe4e1bab--32292123aada45fcab960710316649e2
95c5bc93aaa44bf5a23a286952ce8c5c
1
bc22f553e6694db987325bfdf294b313
32292123aada45fcab960710316649e2--bc22f553e6694db987325bfdf294b313
b2d75ff0e8c14e419fbd2fcd2000549f
bc22f553e6694db987325bfdf294b313--b2d75ff0e8c14e419fbd2fcd2000549f
3466a923196f4ace9718a11f6875a995
b2d75ff0e8c14e419fbd2fcd2000549f--3466a923196f4ace9718a11f6875a995
d2456c76bdc648c6ac764e388f96e753
6058e33f46ca4e1192ef6538d1c02209
Y
95c5bc93aaa44bf5a23a286952ce8c5c--6058e33f46ca4e1192ef6538d1c02209
25687c47a7124a75b323813af7508af7
2
e77dd6c5de2847debc30b4e520b827e4
6058e33f46ca4e1192ef6538d1c02209--e77dd6c5de2847debc30b4e520b827e4
80a1438344d84964837263c75d6de04b
HamEvo
e77dd6c5de2847debc30b4e520b827e4--80a1438344d84964837263c75d6de04b
80a1438344d84964837263c75d6de04b--d2456c76bdc648c6ac764e388f96e753
fe90b742a3fc406eb264854054504c2d
3abcce68f9314b7f9989a49afc27d9f4
RX(x)
25687c47a7124a75b323813af7508af7--3abcce68f9314b7f9989a49afc27d9f4
8a97172863af418893becdc929dd1ba8
3
ab753fa3fe0d44a689e53acaddc75555
3abcce68f9314b7f9989a49afc27d9f4--ab753fa3fe0d44a689e53acaddc75555
7e2d37f122f5465cbb23da6405be6ec0
t = 10
ab753fa3fe0d44a689e53acaddc75555--7e2d37f122f5465cbb23da6405be6ec0
7e2d37f122f5465cbb23da6405be6ec0--fe90b742a3fc406eb264854054504c2d
877f2794bc57425c9a1ad2960df59ae5
607928c6b36842ca96efeab85e9c6bc5
RX(0.5)
8a97172863af418893becdc929dd1ba8--607928c6b36842ca96efeab85e9c6bc5
49c35e7983fb438199adaf4c63015763
X
607928c6b36842ca96efeab85e9c6bc5--49c35e7983fb438199adaf4c63015763
49c35e7983fb438199adaf4c63015763--ab753fa3fe0d44a689e53acaddc75555
8edca86aceaa40989e6ba4df5f9861c3
49c35e7983fb438199adaf4c63015763--8edca86aceaa40989e6ba4df5f9861c3
8edca86aceaa40989e6ba4df5f9861c3--877f2794bc57425c9a1ad2960df59ae5
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_340a17b39a194d82b46210377f1879bf
HEA
cluster_664713db0c304b6497f046a232fee300
Tower Fourier FM
8c6ad1ef46f740e28b6211f6bcf63cd9
0
8844a8599fbd48199dc1dfd2a7472458
RX(1.0*phi)
8c6ad1ef46f740e28b6211f6bcf63cd9--8844a8599fbd48199dc1dfd2a7472458
c2b610dd6514416f9e1f6673d9030f01
1
8a9dcd98ce5f475f9041a1c29ca2ed45
RX(theta₀)
8844a8599fbd48199dc1dfd2a7472458--8a9dcd98ce5f475f9041a1c29ca2ed45
b3a154bafd1a444c95ed920fe642c4d2
RY(theta₄)
8a9dcd98ce5f475f9041a1c29ca2ed45--b3a154bafd1a444c95ed920fe642c4d2
fcdb3e592a164007be9f2029cf4913a7
RX(theta₈)
b3a154bafd1a444c95ed920fe642c4d2--fcdb3e592a164007be9f2029cf4913a7
e043fc307d56441c99cdbd5238753b09
fcdb3e592a164007be9f2029cf4913a7--e043fc307d56441c99cdbd5238753b09
2eca4bd0ab974ccb80cdffb85a2c3883
e043fc307d56441c99cdbd5238753b09--2eca4bd0ab974ccb80cdffb85a2c3883
89d4e271282b44c6a59837ff189fc0a7
RX(theta₁₂)
2eca4bd0ab974ccb80cdffb85a2c3883--89d4e271282b44c6a59837ff189fc0a7
3f2a8d6d848f4ad6a834456140e6fd0e
RY(theta₁₆)
89d4e271282b44c6a59837ff189fc0a7--3f2a8d6d848f4ad6a834456140e6fd0e
9c066896fe2745f3a1a65a844d2269ac
RX(theta₂₀)
3f2a8d6d848f4ad6a834456140e6fd0e--9c066896fe2745f3a1a65a844d2269ac
220c2d95f19c40869299b1ca0baafffe
9c066896fe2745f3a1a65a844d2269ac--220c2d95f19c40869299b1ca0baafffe
afe19fa1150743b48e57711c397a0e8e
220c2d95f19c40869299b1ca0baafffe--afe19fa1150743b48e57711c397a0e8e
ec4a82adfc5c437d9b54565ebd6a2017
afe19fa1150743b48e57711c397a0e8e--ec4a82adfc5c437d9b54565ebd6a2017
aec6e8180aa045c98aed9e920ded9621
4b7059a906e84f9b86dec657e47346e9
RX(2.0*phi)
c2b610dd6514416f9e1f6673d9030f01--4b7059a906e84f9b86dec657e47346e9
ae1baa509a2c415084131553b3d5866b
2
10013859118748a9a630f1c257f8892f
RX(theta₁)
4b7059a906e84f9b86dec657e47346e9--10013859118748a9a630f1c257f8892f
d51995f999f94164ad49f2e4d61d2c75
RY(theta₅)
10013859118748a9a630f1c257f8892f--d51995f999f94164ad49f2e4d61d2c75
5ffdcba11de848f6a2997463afbfcdef
RX(theta₉)
d51995f999f94164ad49f2e4d61d2c75--5ffdcba11de848f6a2997463afbfcdef
2992c6073bcb46259025b30de381ba58
X
5ffdcba11de848f6a2997463afbfcdef--2992c6073bcb46259025b30de381ba58
2992c6073bcb46259025b30de381ba58--e043fc307d56441c99cdbd5238753b09
84713ffb195f478e9b52946f7fac21bb
2992c6073bcb46259025b30de381ba58--84713ffb195f478e9b52946f7fac21bb
1d029925fd9449098f151b626861e208
RX(theta₁₃)
84713ffb195f478e9b52946f7fac21bb--1d029925fd9449098f151b626861e208
582fd5f6f00e41d0b1c7fe2690e6c2ff
RY(theta₁₇)
1d029925fd9449098f151b626861e208--582fd5f6f00e41d0b1c7fe2690e6c2ff
26e3aad9126a4e8594f76f41e569b0fb
RX(theta₂₁)
582fd5f6f00e41d0b1c7fe2690e6c2ff--26e3aad9126a4e8594f76f41e569b0fb
87b9268e531a43328727c2dd91efd9a6
X
26e3aad9126a4e8594f76f41e569b0fb--87b9268e531a43328727c2dd91efd9a6
87b9268e531a43328727c2dd91efd9a6--220c2d95f19c40869299b1ca0baafffe
dd0bc56c71224672857395bbe7d81f6d
87b9268e531a43328727c2dd91efd9a6--dd0bc56c71224672857395bbe7d81f6d
dd0bc56c71224672857395bbe7d81f6d--aec6e8180aa045c98aed9e920ded9621
3a6ecd1034b241d9946408468d708b90
40b4a1d32a70484da8a9b1613fe8a781
RX(3.0*phi)
ae1baa509a2c415084131553b3d5866b--40b4a1d32a70484da8a9b1613fe8a781
8e8b8cf289a4487cb667c61474e07725
3
5a8a1a117cf1404cae0f4abe18cb730d
RX(theta₂)
40b4a1d32a70484da8a9b1613fe8a781--5a8a1a117cf1404cae0f4abe18cb730d
cd6b8a7f05f34aa6ad18983140df99ab
RY(theta₆)
5a8a1a117cf1404cae0f4abe18cb730d--cd6b8a7f05f34aa6ad18983140df99ab
effa31862640457ea3583ce4729f0c09
RX(theta₁₀)
cd6b8a7f05f34aa6ad18983140df99ab--effa31862640457ea3583ce4729f0c09
130c6459c98b4c089e5046d6e65b079d
effa31862640457ea3583ce4729f0c09--130c6459c98b4c089e5046d6e65b079d
ebc165c0eb8349959d41960006ec972a
X
130c6459c98b4c089e5046d6e65b079d--ebc165c0eb8349959d41960006ec972a
ebc165c0eb8349959d41960006ec972a--84713ffb195f478e9b52946f7fac21bb
30ee0e2dcb2947b8a46dbbe828104c93
RX(theta₁₄)
ebc165c0eb8349959d41960006ec972a--30ee0e2dcb2947b8a46dbbe828104c93
eb75623c17ad474b9ce0a19d61b6c150
RY(theta₁₈)
30ee0e2dcb2947b8a46dbbe828104c93--eb75623c17ad474b9ce0a19d61b6c150
17df23a37a464e9884236ba49a904ea6
RX(theta₂₂)
eb75623c17ad474b9ce0a19d61b6c150--17df23a37a464e9884236ba49a904ea6
1a61bc3841164072ba303c59eb7c9a2b
17df23a37a464e9884236ba49a904ea6--1a61bc3841164072ba303c59eb7c9a2b
a647d3cda86b4f23ab72d99adb9ac501
X
1a61bc3841164072ba303c59eb7c9a2b--a647d3cda86b4f23ab72d99adb9ac501
a647d3cda86b4f23ab72d99adb9ac501--dd0bc56c71224672857395bbe7d81f6d
a647d3cda86b4f23ab72d99adb9ac501--3a6ecd1034b241d9946408468d708b90
d71a0425008441dc9b2482e048a818f6
522afe4c789642a08c61cfe18fbc3900
RX(4.0*phi)
8e8b8cf289a4487cb667c61474e07725--522afe4c789642a08c61cfe18fbc3900
0e8569247b2445178f033ec17b27211d
RX(theta₃)
522afe4c789642a08c61cfe18fbc3900--0e8569247b2445178f033ec17b27211d
67c9e75502074dd7871c7640505a8cb3
RY(theta₇)
0e8569247b2445178f033ec17b27211d--67c9e75502074dd7871c7640505a8cb3
9d2f42bf12f84c03be7b79e3ab85d33d
RX(theta₁₁)
67c9e75502074dd7871c7640505a8cb3--9d2f42bf12f84c03be7b79e3ab85d33d
8edbd14a4ede4794a5bd2b07d1048e53
X
9d2f42bf12f84c03be7b79e3ab85d33d--8edbd14a4ede4794a5bd2b07d1048e53
8edbd14a4ede4794a5bd2b07d1048e53--130c6459c98b4c089e5046d6e65b079d
65a6fb945a55494b8bf831ce84c9ae70
8edbd14a4ede4794a5bd2b07d1048e53--65a6fb945a55494b8bf831ce84c9ae70
6cb6c53d936d430b8604a0bd6138a199
RX(theta₁₅)
65a6fb945a55494b8bf831ce84c9ae70--6cb6c53d936d430b8604a0bd6138a199
8439bc87f22a488aae82fd409a357774
RY(theta₁₉)
6cb6c53d936d430b8604a0bd6138a199--8439bc87f22a488aae82fd409a357774
fe1db3c6e8d74fd283c0ee7aedb0bdf6
RX(theta₂₃)
8439bc87f22a488aae82fd409a357774--fe1db3c6e8d74fd283c0ee7aedb0bdf6
64fae01210564cab89ee7e49c5440c6a
X
fe1db3c6e8d74fd283c0ee7aedb0bdf6--64fae01210564cab89ee7e49c5440c6a
64fae01210564cab89ee7e49c5440c6a--1a61bc3841164072ba303c59eb7c9a2b
ec2d3f6746f0490d9a7f928a3e25a0fd
64fae01210564cab89ee7e49c5440c6a--ec2d3f6746f0490d9a7f928a3e25a0fd
ec2d3f6746f0490d9a7f928a3e25a0fd--d71a0425008441dc9b2482e048a818f6
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_bf56c4d673b943578d30cd10336fc6de
Obs.
cluster_e501cffe6555426da7cc0abfe5b74a4b
cluster_6545db24161047808dc0dd2fd53efd43
HEA
e4804dfc1bfd485c91ac2377682e3d9d
0
b9d26421a1a1460eb8669c44f455b7b6
RX(theta₀)
e4804dfc1bfd485c91ac2377682e3d9d--b9d26421a1a1460eb8669c44f455b7b6
46e6fee8b9ab4a4ab95432d55bdef034
1
a2332b82813c45e290bf9b79000db3ed
RY(theta₃)
b9d26421a1a1460eb8669c44f455b7b6--a2332b82813c45e290bf9b79000db3ed
22f1095440f34a2bb460f58b44da3b34
RX(theta₆)
a2332b82813c45e290bf9b79000db3ed--22f1095440f34a2bb460f58b44da3b34
57f69962850b4e16ac47fd08a8c980dc
22f1095440f34a2bb460f58b44da3b34--57f69962850b4e16ac47fd08a8c980dc
55428ed61b974ec7a888cca759033998
57f69962850b4e16ac47fd08a8c980dc--55428ed61b974ec7a888cca759033998
04841d05d60c4c1786b012129eecffff
RX(theta₉)
55428ed61b974ec7a888cca759033998--04841d05d60c4c1786b012129eecffff
204b46d29361451299d05c031bf0d5ca
RY(theta₁₂)
04841d05d60c4c1786b012129eecffff--204b46d29361451299d05c031bf0d5ca
178b3e6cc1a6484c8e2f27bdd7f1ef3f
RX(theta₁₅)
204b46d29361451299d05c031bf0d5ca--178b3e6cc1a6484c8e2f27bdd7f1ef3f
8ccbf751dd7d4a2cad18d62b55a06cfd
178b3e6cc1a6484c8e2f27bdd7f1ef3f--8ccbf751dd7d4a2cad18d62b55a06cfd
af5af3958ba24741bb5f34de08610a20
8ccbf751dd7d4a2cad18d62b55a06cfd--af5af3958ba24741bb5f34de08610a20
0a327c214e7642c68a67d1fecb8f5596
af5af3958ba24741bb5f34de08610a20--0a327c214e7642c68a67d1fecb8f5596
50453977591445aca3248d7bff1669e3
0a327c214e7642c68a67d1fecb8f5596--50453977591445aca3248d7bff1669e3
49d40e173d2c4643861b7ac09221ba20
e54c29cd81f949248e32b3bff9b897d1
RX(theta₁)
46e6fee8b9ab4a4ab95432d55bdef034--e54c29cd81f949248e32b3bff9b897d1
059efc4dfa4144f389f4377c75be986a
2
8e32511dee394ed5b25b7bdcb68fbcc1
RY(theta₄)
e54c29cd81f949248e32b3bff9b897d1--8e32511dee394ed5b25b7bdcb68fbcc1
1ad4a7d477fe4add86e2febe7860af6e
RX(theta₇)
8e32511dee394ed5b25b7bdcb68fbcc1--1ad4a7d477fe4add86e2febe7860af6e
c8f8c2155171491bbff71cf457b3ce54
X
1ad4a7d477fe4add86e2febe7860af6e--c8f8c2155171491bbff71cf457b3ce54
c8f8c2155171491bbff71cf457b3ce54--57f69962850b4e16ac47fd08a8c980dc
00094e3d778c45238f69ae7a877cc792
c8f8c2155171491bbff71cf457b3ce54--00094e3d778c45238f69ae7a877cc792
4f2923e65c3b4e7b84bc7079c4229afd
RX(theta₁₀)
00094e3d778c45238f69ae7a877cc792--4f2923e65c3b4e7b84bc7079c4229afd
202c5c1655ae4736bb01b0cacf86e702
RY(theta₁₃)
4f2923e65c3b4e7b84bc7079c4229afd--202c5c1655ae4736bb01b0cacf86e702
06ac686f315a4635864cca1ced81e094
RX(theta₁₆)
202c5c1655ae4736bb01b0cacf86e702--06ac686f315a4635864cca1ced81e094
44261a8210e04e078810bfc16c600049
X
06ac686f315a4635864cca1ced81e094--44261a8210e04e078810bfc16c600049
44261a8210e04e078810bfc16c600049--8ccbf751dd7d4a2cad18d62b55a06cfd
e3e1e8425dd24c6b92b5fc06f3565f1d
44261a8210e04e078810bfc16c600049--e3e1e8425dd24c6b92b5fc06f3565f1d
9073b283184645be94dcff91219f04f6
AddBlock
e3e1e8425dd24c6b92b5fc06f3565f1d--9073b283184645be94dcff91219f04f6
9073b283184645be94dcff91219f04f6--49d40e173d2c4643861b7ac09221ba20
d6e067c879c54888a099b72e537ac19e
370df8f3e6d74dfdb30a1a04a8ff3c59
RX(theta₂)
059efc4dfa4144f389f4377c75be986a--370df8f3e6d74dfdb30a1a04a8ff3c59
6ac66fb8f3c84b3c95c376370d17bdd2
RY(theta₅)
370df8f3e6d74dfdb30a1a04a8ff3c59--6ac66fb8f3c84b3c95c376370d17bdd2
f48fee7f87654e2d99c7e5eb773d6a36
RX(theta₈)
6ac66fb8f3c84b3c95c376370d17bdd2--f48fee7f87654e2d99c7e5eb773d6a36
ef24069e900f4f0cad99a674d80e4148
f48fee7f87654e2d99c7e5eb773d6a36--ef24069e900f4f0cad99a674d80e4148
85fca066d91d43cc8d8e9b018adbd511
X
ef24069e900f4f0cad99a674d80e4148--85fca066d91d43cc8d8e9b018adbd511
85fca066d91d43cc8d8e9b018adbd511--00094e3d778c45238f69ae7a877cc792
acd60124828d4413956a4f7cb4874e95
RX(theta₁₁)
85fca066d91d43cc8d8e9b018adbd511--acd60124828d4413956a4f7cb4874e95
1dbb6e5ee6324cbd96bde9623bf3193c
RY(theta₁₄)
acd60124828d4413956a4f7cb4874e95--1dbb6e5ee6324cbd96bde9623bf3193c
0be466c986cf44b0a4a057251e02ea59
RX(theta₁₇)
1dbb6e5ee6324cbd96bde9623bf3193c--0be466c986cf44b0a4a057251e02ea59
46c0a38204d246cba7b58bebde2f01ac
0be466c986cf44b0a4a057251e02ea59--46c0a38204d246cba7b58bebde2f01ac
81f1af4877b8434a97ff82018ad69ca8
X
46c0a38204d246cba7b58bebde2f01ac--81f1af4877b8434a97ff82018ad69ca8
81f1af4877b8434a97ff82018ad69ca8--e3e1e8425dd24c6b92b5fc06f3565f1d
4bb99b1b6d3c4b509c65e8307b2c34a1
81f1af4877b8434a97ff82018ad69ca8--4bb99b1b6d3c4b509c65e8307b2c34a1
4bb99b1b6d3c4b509c65e8307b2c34a1--d6e067c879c54888a099b72e537ac19e
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
928028ed90814d71950872d5b353c825
0
1c24cee896d249eb96021b7b0ba8a71e
928028ed90814d71950872d5b353c825--1c24cee896d249eb96021b7b0ba8a71e
44ef952cebee4904a61e4dff3512c305
1
3f9892b17bd24b96b7c22bb96fd10d4e
e5a6aa09dbc3493fa70137532e06de76
1c24cee896d249eb96021b7b0ba8a71e--e5a6aa09dbc3493fa70137532e06de76
e83903ebac6c4b09bb5553672ed26137
3f9892b17bd24b96b7c22bb96fd10d4e--e83903ebac6c4b09bb5553672ed26137
1fa5c0a1a518401ab438eb98eac61bb4
a28c073b552d4f01915c0f8385811365
e83903ebac6c4b09bb5553672ed26137--a28c073b552d4f01915c0f8385811365
48718ffdac8a4517bbd19a9d842a13f3
1fa5c0a1a518401ab438eb98eac61bb4--48718ffdac8a4517bbd19a9d842a13f3
ff164b1e83ac407fa5ad6ff57b134a63
6a4e7f1c4b6b4916b7af9e28802b399a
44ef952cebee4904a61e4dff3512c305--6a4e7f1c4b6b4916b7af9e28802b399a
2226819ca970487b9040bcfd0989b0ed
2
6a4e7f1c4b6b4916b7af9e28802b399a--3f9892b17bd24b96b7c22bb96fd10d4e
d5c14a95c3404ff0a1ccea0d78789593
e5a6aa09dbc3493fa70137532e06de76--d5c14a95c3404ff0a1ccea0d78789593
c16401bc50da4b6e83a432cba6c36cda
d5c14a95c3404ff0a1ccea0d78789593--c16401bc50da4b6e83a432cba6c36cda
c16401bc50da4b6e83a432cba6c36cda--ff164b1e83ac407fa5ad6ff57b134a63
93ad0f9d6a27461d957fbb5af971c79d
87963967aaac48448caca732270fadbd
2226819ca970487b9040bcfd0989b0ed--87963967aaac48448caca732270fadbd
0ae947c848314369ae9a38d95d72fb62
3
d399087e00094e3895c8e3652e120e12
87963967aaac48448caca732270fadbd--d399087e00094e3895c8e3652e120e12
17db687cc1fa4c8db7aec6b4ba171936
d399087e00094e3895c8e3652e120e12--17db687cc1fa4c8db7aec6b4ba171936
1fe8ba284a4141358ad912d06158d5e2
17db687cc1fa4c8db7aec6b4ba171936--1fe8ba284a4141358ad912d06158d5e2
1fe8ba284a4141358ad912d06158d5e2--93ad0f9d6a27461d957fbb5af971c79d
2ace2292f5084b6e9089326e04890d8d
05b8e2dd278a4bfdbbf210c5ff8b632f
0ae947c848314369ae9a38d95d72fb62--05b8e2dd278a4bfdbbf210c5ff8b632f
da3c9e9681d34ade9a60d0bff801cd66
05b8e2dd278a4bfdbbf210c5ff8b632f--da3c9e9681d34ade9a60d0bff801cd66
63d5138982724c4e8a5d866c7e56a6a8
da3c9e9681d34ade9a60d0bff801cd66--63d5138982724c4e8a5d866c7e56a6a8
63d5138982724c4e8a5d866c7e56a6a8--1fa5c0a1a518401ab438eb98eac61bb4
a28c073b552d4f01915c0f8385811365--2ace2292f5084b6e9089326e04890d8d
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
243b1fc763534c2b883af25be19c52cf
0
49eac79fc041437c84bc4d18ec6b7deb
243b1fc763534c2b883af25be19c52cf--49eac79fc041437c84bc4d18ec6b7deb
13eba3ee82c94eb7ab848c2d784284d6
1
e6baed751c6147b6950a682b46d6ede0
49eac79fc041437c84bc4d18ec6b7deb--e6baed751c6147b6950a682b46d6ede0
56ca21a9b8824749855bb0f9acd036b3
e6baed751c6147b6950a682b46d6ede0--56ca21a9b8824749855bb0f9acd036b3
2577f5b25b35417485423e82247774dd
56ca21a9b8824749855bb0f9acd036b3--2577f5b25b35417485423e82247774dd
f9b6027dd8f44db183811e653fec8bc5
15b3c9ceeb974470ae298e0a99f3e3f9
PHASE(0.5)
13eba3ee82c94eb7ab848c2d784284d6--15b3c9ceeb974470ae298e0a99f3e3f9
c96d8650ff3648e991fbe9aaf84b973d
2
15b3c9ceeb974470ae298e0a99f3e3f9--49eac79fc041437c84bc4d18ec6b7deb
a7c8c4c77f1448aa8a332af9329d6a49
15b3c9ceeb974470ae298e0a99f3e3f9--a7c8c4c77f1448aa8a332af9329d6a49
39e42316e8254c35bd7c165723c4e3d7
a7c8c4c77f1448aa8a332af9329d6a49--39e42316e8254c35bd7c165723c4e3d7
39e42316e8254c35bd7c165723c4e3d7--f9b6027dd8f44db183811e653fec8bc5
ba2c2a05a2064fa385c0ce4f17254eea
277a85d997094361be5354bea7e38257
c96d8650ff3648e991fbe9aaf84b973d--277a85d997094361be5354bea7e38257
730256a5275044ccb5392f0336191e3f
3
1a118a406f4843ec95b4c009fd405012
PHASE(0.5)
277a85d997094361be5354bea7e38257--1a118a406f4843ec95b4c009fd405012
1a118a406f4843ec95b4c009fd405012--e6baed751c6147b6950a682b46d6ede0
2191ea988b324b88aec01e61bd1ba548
1a118a406f4843ec95b4c009fd405012--2191ea988b324b88aec01e61bd1ba548
2191ea988b324b88aec01e61bd1ba548--ba2c2a05a2064fa385c0ce4f17254eea
246393b1098f4f3a8bd04289c6b2645a
7355eab9d11140b1b6c6dc1d4422dbb5
730256a5275044ccb5392f0336191e3f--7355eab9d11140b1b6c6dc1d4422dbb5
27d9b26a7c9948f2bd3ef6bf607f5e8f
7355eab9d11140b1b6c6dc1d4422dbb5--27d9b26a7c9948f2bd3ef6bf607f5e8f
450aceaf90084aada9bc772c4c5f7a7b
PHASE(0.5)
27d9b26a7c9948f2bd3ef6bf607f5e8f--450aceaf90084aada9bc772c4c5f7a7b
450aceaf90084aada9bc772c4c5f7a7b--56ca21a9b8824749855bb0f9acd036b3
450aceaf90084aada9bc772c4c5f7a7b--246393b1098f4f3a8bd04289c6b2645a
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