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
1a7764fb65ec477dbc3f19187b323b71
0
dc3f4dfacd6244899bd3a8f5892af80d
X
1a7764fb65ec477dbc3f19187b323b71--dc3f4dfacd6244899bd3a8f5892af80d
154d0e6ae7374118978c4c7a1eb801d8
1
f6e8b7345a5b4f94a41a7821d6e1cb36
dc3f4dfacd6244899bd3a8f5892af80d--f6e8b7345a5b4f94a41a7821d6e1cb36
0b90990365694e82937df77d8b7a999a
da7dea2e0da644a581c06992081a1c9d
Y
154d0e6ae7374118978c4c7a1eb801d8--da7dea2e0da644a581c06992081a1c9d
da7dea2e0da644a581c06992081a1c9d--0b90990365694e82937df77d8b7a999a
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
dbb570222c5b4d8f804abf5045536b8b
0
a7b12a0d154a411eaed8a0558600df62
X
dbb570222c5b4d8f804abf5045536b8b--a7b12a0d154a411eaed8a0558600df62
026f3c26f38e45c6987616d3325dbee3
Y
a7b12a0d154a411eaed8a0558600df62--026f3c26f38e45c6987616d3325dbee3
692248bf988540bba6e9e123df60b4a4
026f3c26f38e45c6987616d3325dbee3--692248bf988540bba6e9e123df60b4a4
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
632095763647483889d91503be5f61c4
0
c2c2e98923024ac0a6ff71ac68d01bad
X
632095763647483889d91503be5f61c4--c2c2e98923024ac0a6ff71ac68d01bad
4b0a7223d5964126a2706204802a19a2
1
511d86063d0441dfbfe0379775bb67a6
c2c2e98923024ac0a6ff71ac68d01bad--511d86063d0441dfbfe0379775bb67a6
c87e1133f8084bb38e9a757a00263d7f
511d86063d0441dfbfe0379775bb67a6--c87e1133f8084bb38e9a757a00263d7f
a590bf668f8f46d389768822e1da88ad
3c865970f8db4e9686800333922246ca
4b0a7223d5964126a2706204802a19a2--3c865970f8db4e9686800333922246ca
d3b321b931f84975b10e48bdfaeab634
Y
3c865970f8db4e9686800333922246ca--d3b321b931f84975b10e48bdfaeab634
d3b321b931f84975b10e48bdfaeab634--a590bf668f8f46d389768822e1da88ad
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_35b3f89ddfb440caad9578d943d71cf0
33e63e710f0b4ce2890eafd56757b2b9
0
bdbb34ed714d4210bf90678d4bd55dad
33e63e710f0b4ce2890eafd56757b2b9--bdbb34ed714d4210bf90678d4bd55dad
08f05e1284304b29b0781f96b3c9c3f6
1
2850d4d7ac784f8f93d623be3d67ea39
bdbb34ed714d4210bf90678d4bd55dad--2850d4d7ac784f8f93d623be3d67ea39
b6983d3b115a480287e5f57480c9c4ef
77ac1922140f47ee85cc8a8ddace4c8c
AddBlock
08f05e1284304b29b0781f96b3c9c3f6--77ac1922140f47ee85cc8a8ddace4c8c
45026d4c895543c696466119dd172eda
2
77ac1922140f47ee85cc8a8ddace4c8c--b6983d3b115a480287e5f57480c9c4ef
557dd14b6a4047f2b41931fc7c1eeee3
bffbc39078ac44b9a6c1b568ff737f90
45026d4c895543c696466119dd172eda--bffbc39078ac44b9a6c1b568ff737f90
bffbc39078ac44b9a6c1b568ff737f90--557dd14b6a4047f2b41931fc7c1eeee3
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_2ba8b19c522d46d382a939d19c3a28d8
cluster_d859b2dd9b9849bd8fd8469e234ca049
rx
dd1a34950c9e444084094843c167bc97
0
23980b3181204cffb9b208cb1423b5da
X
dd1a34950c9e444084094843c167bc97--23980b3181204cffb9b208cb1423b5da
5dd9540e742e4a45a7c57ba100fa8483
1
275f0cba90e44d39a8aec1cfc581c6f8
23980b3181204cffb9b208cb1423b5da--275f0cba90e44d39a8aec1cfc581c6f8
8c52e1349adf44dda62ec19c613c205a
275f0cba90e44d39a8aec1cfc581c6f8--8c52e1349adf44dda62ec19c613c205a
d41950706e894465b090ee0393365d0c
8c52e1349adf44dda62ec19c613c205a--d41950706e894465b090ee0393365d0c
87909c82b5d04a4d9d57f8377a3c3651
bd1f3cda384948e7a955360a4379feaf
Y
5dd9540e742e4a45a7c57ba100fa8483--bd1f3cda384948e7a955360a4379feaf
7bef9c2eb66846c2b8cef000cc8ebc95
2
5e953f5ccb404dcda9a655f00a1edab8
bd1f3cda384948e7a955360a4379feaf--5e953f5ccb404dcda9a655f00a1edab8
20e3f8caf4f54d8dba4a911f85607495
HamEvo
5e953f5ccb404dcda9a655f00a1edab8--20e3f8caf4f54d8dba4a911f85607495
20e3f8caf4f54d8dba4a911f85607495--87909c82b5d04a4d9d57f8377a3c3651
ab241241a3a44176a23d9c1fbf0e08d9
db41789e3a784675ac6ef53d4315c818
RX(x)
7bef9c2eb66846c2b8cef000cc8ebc95--db41789e3a784675ac6ef53d4315c818
2fdd1829f0ce4994a1674d66aa3f6ce1
3
1b49226d6c2b4456a098763178600f3e
db41789e3a784675ac6ef53d4315c818--1b49226d6c2b4456a098763178600f3e
1a9c33ffa7b64d4fb7496d37a320a33b
t = 10
1b49226d6c2b4456a098763178600f3e--1a9c33ffa7b64d4fb7496d37a320a33b
1a9c33ffa7b64d4fb7496d37a320a33b--ab241241a3a44176a23d9c1fbf0e08d9
119ff958373048f0afee57d201a6183d
df91b71296584cdc98ab252cd570de6d
RX(0.5)
2fdd1829f0ce4994a1674d66aa3f6ce1--df91b71296584cdc98ab252cd570de6d
3a68fd74103c4e15a77cdfed7d470b50
X
df91b71296584cdc98ab252cd570de6d--3a68fd74103c4e15a77cdfed7d470b50
3a68fd74103c4e15a77cdfed7d470b50--1b49226d6c2b4456a098763178600f3e
2c2d2c392d3143fe97513848c4f0ceaa
3a68fd74103c4e15a77cdfed7d470b50--2c2d2c392d3143fe97513848c4f0ceaa
2c2d2c392d3143fe97513848c4f0ceaa--119ff958373048f0afee57d201a6183d
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_4543ff074a0a44e7bebe9758c9645fdf
HEA
cluster_68df27b377fe4250b5cbd32c843e637e
Tower Fourier FM
8ce606d0becf4e9abb221588cb17d7d5
0
54000da1f937426c9f57b790ad0e60e7
RX(1.0*phi)
8ce606d0becf4e9abb221588cb17d7d5--54000da1f937426c9f57b790ad0e60e7
cdeaf857b97a44ac9928f3988d0f9070
1
707e0035ffee4bf79d78accb5334fb58
RX(theta₀)
54000da1f937426c9f57b790ad0e60e7--707e0035ffee4bf79d78accb5334fb58
f2568b6badb144f6a3c6d960bc3653bc
RY(theta₄)
707e0035ffee4bf79d78accb5334fb58--f2568b6badb144f6a3c6d960bc3653bc
01382d8b42584e3c9e32dc86cb17d419
RX(theta₈)
f2568b6badb144f6a3c6d960bc3653bc--01382d8b42584e3c9e32dc86cb17d419
6dc0e46fa7e743bc87ca22c17d5d2224
01382d8b42584e3c9e32dc86cb17d419--6dc0e46fa7e743bc87ca22c17d5d2224
d796fff618384a72bd16b21f20363d98
6dc0e46fa7e743bc87ca22c17d5d2224--d796fff618384a72bd16b21f20363d98
8070cc91381741a6afa5a3ebc71f6915
RX(theta₁₂)
d796fff618384a72bd16b21f20363d98--8070cc91381741a6afa5a3ebc71f6915
c548aa7a09a945d8b1c2c28ee89e7645
RY(theta₁₆)
8070cc91381741a6afa5a3ebc71f6915--c548aa7a09a945d8b1c2c28ee89e7645
8e92259c177d4e4c87b19e7d9c0b94c2
RX(theta₂₀)
c548aa7a09a945d8b1c2c28ee89e7645--8e92259c177d4e4c87b19e7d9c0b94c2
cb93546e281847318e017459c6b4ba4e
8e92259c177d4e4c87b19e7d9c0b94c2--cb93546e281847318e017459c6b4ba4e
3a35fbd10c7c4b4aab9f94cee4c14333
cb93546e281847318e017459c6b4ba4e--3a35fbd10c7c4b4aab9f94cee4c14333
cfaf6511552a4d5eb15b4f7ab7112d32
3a35fbd10c7c4b4aab9f94cee4c14333--cfaf6511552a4d5eb15b4f7ab7112d32
bf3c597783e4460d8ebefa65d298a5e4
6035b4e8e09b4c718aad6f76fdfe8d4c
RX(2.0*phi)
cdeaf857b97a44ac9928f3988d0f9070--6035b4e8e09b4c718aad6f76fdfe8d4c
f5f13d2f249b43c58cbfcc5071eaf095
2
1145a95d6ad3426c99c18181b43c22fe
RX(theta₁)
6035b4e8e09b4c718aad6f76fdfe8d4c--1145a95d6ad3426c99c18181b43c22fe
9a3080f32ab6483091c935b138f23c4a
RY(theta₅)
1145a95d6ad3426c99c18181b43c22fe--9a3080f32ab6483091c935b138f23c4a
7da5172ecefe4c1d97494ba9b5e5d119
RX(theta₉)
9a3080f32ab6483091c935b138f23c4a--7da5172ecefe4c1d97494ba9b5e5d119
40cfad3d057542f5ab1eea3bc5bb1a2f
X
7da5172ecefe4c1d97494ba9b5e5d119--40cfad3d057542f5ab1eea3bc5bb1a2f
40cfad3d057542f5ab1eea3bc5bb1a2f--6dc0e46fa7e743bc87ca22c17d5d2224
7737e544e4c344d38368a9921806eaf7
40cfad3d057542f5ab1eea3bc5bb1a2f--7737e544e4c344d38368a9921806eaf7
2524bead9e4d4dac8823588761e262c3
RX(theta₁₃)
7737e544e4c344d38368a9921806eaf7--2524bead9e4d4dac8823588761e262c3
f92ef9bba1204a4cbc8459ee2cd979db
RY(theta₁₇)
2524bead9e4d4dac8823588761e262c3--f92ef9bba1204a4cbc8459ee2cd979db
76f4be443a3547638bb0437edafa1f82
RX(theta₂₁)
f92ef9bba1204a4cbc8459ee2cd979db--76f4be443a3547638bb0437edafa1f82
6d745c16dc334b738074f61b74fae2d9
X
76f4be443a3547638bb0437edafa1f82--6d745c16dc334b738074f61b74fae2d9
6d745c16dc334b738074f61b74fae2d9--cb93546e281847318e017459c6b4ba4e
045e065d58af43359faf12da2525f257
6d745c16dc334b738074f61b74fae2d9--045e065d58af43359faf12da2525f257
045e065d58af43359faf12da2525f257--bf3c597783e4460d8ebefa65d298a5e4
d533b1cb9ff2448a8cb7d50d0a379e9e
771608273cc84952b2e89ca9fe9ceec2
RX(3.0*phi)
f5f13d2f249b43c58cbfcc5071eaf095--771608273cc84952b2e89ca9fe9ceec2
55ae5299a1db47dbac8abf52f264b063
3
95d44bfae69248ada10de3d8f7bdad76
RX(theta₂)
771608273cc84952b2e89ca9fe9ceec2--95d44bfae69248ada10de3d8f7bdad76
38a8516c8d7d455b98898b503387b164
RY(theta₆)
95d44bfae69248ada10de3d8f7bdad76--38a8516c8d7d455b98898b503387b164
9d96cf40b2794edfad96befd4e416733
RX(theta₁₀)
38a8516c8d7d455b98898b503387b164--9d96cf40b2794edfad96befd4e416733
6648883fea4d4c85bafb35b1bd2c9c5f
9d96cf40b2794edfad96befd4e416733--6648883fea4d4c85bafb35b1bd2c9c5f
ca45beecefb84c7c9295ecc99d1df66c
X
6648883fea4d4c85bafb35b1bd2c9c5f--ca45beecefb84c7c9295ecc99d1df66c
ca45beecefb84c7c9295ecc99d1df66c--7737e544e4c344d38368a9921806eaf7
504d74bb45df46c99fcd748554d6a17b
RX(theta₁₄)
ca45beecefb84c7c9295ecc99d1df66c--504d74bb45df46c99fcd748554d6a17b
7869b80ac3eb493cacc07b7c38f86ede
RY(theta₁₈)
504d74bb45df46c99fcd748554d6a17b--7869b80ac3eb493cacc07b7c38f86ede
405abfe034724cd19cdac240ed0aa200
RX(theta₂₂)
7869b80ac3eb493cacc07b7c38f86ede--405abfe034724cd19cdac240ed0aa200
9be6893c66ac4df7ac482e0f605ea649
405abfe034724cd19cdac240ed0aa200--9be6893c66ac4df7ac482e0f605ea649
cd229004734948a0a0cd34260fb1401c
X
9be6893c66ac4df7ac482e0f605ea649--cd229004734948a0a0cd34260fb1401c
cd229004734948a0a0cd34260fb1401c--045e065d58af43359faf12da2525f257
cd229004734948a0a0cd34260fb1401c--d533b1cb9ff2448a8cb7d50d0a379e9e
3353dc2e0b2549898eea41b2c3c50f4b
ea5fd07fc8da42eea8c36460e3e72790
RX(4.0*phi)
55ae5299a1db47dbac8abf52f264b063--ea5fd07fc8da42eea8c36460e3e72790
d543d91222934e67bb6064f5c1c934a0
RX(theta₃)
ea5fd07fc8da42eea8c36460e3e72790--d543d91222934e67bb6064f5c1c934a0
a64df990cf9244c88fb8c6718e5f15d1
RY(theta₇)
d543d91222934e67bb6064f5c1c934a0--a64df990cf9244c88fb8c6718e5f15d1
2887f003d30945b896e4d3d9438a96a0
RX(theta₁₁)
a64df990cf9244c88fb8c6718e5f15d1--2887f003d30945b896e4d3d9438a96a0
7783df9e8ac84d12ae0f8fef294164b3
X
2887f003d30945b896e4d3d9438a96a0--7783df9e8ac84d12ae0f8fef294164b3
7783df9e8ac84d12ae0f8fef294164b3--6648883fea4d4c85bafb35b1bd2c9c5f
6f252e702b31437491961660f2827356
7783df9e8ac84d12ae0f8fef294164b3--6f252e702b31437491961660f2827356
a687e7683e9b43afa0775370f453a69b
RX(theta₁₅)
6f252e702b31437491961660f2827356--a687e7683e9b43afa0775370f453a69b
1780240e53bd409bb03153b7337a8067
RY(theta₁₉)
a687e7683e9b43afa0775370f453a69b--1780240e53bd409bb03153b7337a8067
c5adff865d71413cb4d6817e314f5543
RX(theta₂₃)
1780240e53bd409bb03153b7337a8067--c5adff865d71413cb4d6817e314f5543
d392bd5fb4334ef9b29c9543dcbcea3d
X
c5adff865d71413cb4d6817e314f5543--d392bd5fb4334ef9b29c9543dcbcea3d
d392bd5fb4334ef9b29c9543dcbcea3d--9be6893c66ac4df7ac482e0f605ea649
035ea8f7fd0a459aa6e23ff4570e2924
d392bd5fb4334ef9b29c9543dcbcea3d--035ea8f7fd0a459aa6e23ff4570e2924
035ea8f7fd0a459aa6e23ff4570e2924--3353dc2e0b2549898eea41b2c3c50f4b
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_a34c07a3f5d34988bd3040df3dc5621d
Obs.
cluster_d9fdb720493448b7bd77937cfc19771d
cluster_f57569d028194ebf9c6d6eaf98648c54
HEA
e1443824df674e8bb3b99776f753dae7
0
56698b71f92343bc8240ca6874faad28
RX(theta₀)
e1443824df674e8bb3b99776f753dae7--56698b71f92343bc8240ca6874faad28
3d569a9fc5ed4835bae7d93efd63fc06
1
fc8ba0a0b9d14d20b3a2412e72a3f59a
RY(theta₃)
56698b71f92343bc8240ca6874faad28--fc8ba0a0b9d14d20b3a2412e72a3f59a
784acfc7636d4387813cecf5d5f40402
RX(theta₆)
fc8ba0a0b9d14d20b3a2412e72a3f59a--784acfc7636d4387813cecf5d5f40402
b6409f9d38ee4465bf3a52aea651b425
784acfc7636d4387813cecf5d5f40402--b6409f9d38ee4465bf3a52aea651b425
5959ba8ae0184742bed3c5667142b277
b6409f9d38ee4465bf3a52aea651b425--5959ba8ae0184742bed3c5667142b277
fd3dd2e04de344d6a898f00975581b7c
RX(theta₉)
5959ba8ae0184742bed3c5667142b277--fd3dd2e04de344d6a898f00975581b7c
a7ed16f051164ef691efb007982bb86b
RY(theta₁₂)
fd3dd2e04de344d6a898f00975581b7c--a7ed16f051164ef691efb007982bb86b
410abc90c3d2446aa5eb91995e650e97
RX(theta₁₅)
a7ed16f051164ef691efb007982bb86b--410abc90c3d2446aa5eb91995e650e97
3362c82484ed4c38b2d8f4d2709943d7
410abc90c3d2446aa5eb91995e650e97--3362c82484ed4c38b2d8f4d2709943d7
060a91dfedcc44c8bd13097cc0f2130e
3362c82484ed4c38b2d8f4d2709943d7--060a91dfedcc44c8bd13097cc0f2130e
9d01e7db65e14076ab5e0eeb31c4a2ec
060a91dfedcc44c8bd13097cc0f2130e--9d01e7db65e14076ab5e0eeb31c4a2ec
2175239f6cf3423290cb1640da3fa0da
9d01e7db65e14076ab5e0eeb31c4a2ec--2175239f6cf3423290cb1640da3fa0da
83ea8367785042ff96c0213675f2ce46
dfd9a5cb364e42668f519fd6d1e6bf99
RX(theta₁)
3d569a9fc5ed4835bae7d93efd63fc06--dfd9a5cb364e42668f519fd6d1e6bf99
32eb3e115c5648e4a87d9ee436b01859
2
080f1fe9adaa4778b73cbbae18a35490
RY(theta₄)
dfd9a5cb364e42668f519fd6d1e6bf99--080f1fe9adaa4778b73cbbae18a35490
44c9f4c5345b4295823b2f2935c7eb4e
RX(theta₇)
080f1fe9adaa4778b73cbbae18a35490--44c9f4c5345b4295823b2f2935c7eb4e
2d5899baa6944f81a4dec910c7de6212
X
44c9f4c5345b4295823b2f2935c7eb4e--2d5899baa6944f81a4dec910c7de6212
2d5899baa6944f81a4dec910c7de6212--b6409f9d38ee4465bf3a52aea651b425
d451ace732fd4085851610457decb548
2d5899baa6944f81a4dec910c7de6212--d451ace732fd4085851610457decb548
6887c1795ebe49b08de4f7bbb6bba0db
RX(theta₁₀)
d451ace732fd4085851610457decb548--6887c1795ebe49b08de4f7bbb6bba0db
d9d52d49a6894022bc567b09f1d3abb3
RY(theta₁₃)
6887c1795ebe49b08de4f7bbb6bba0db--d9d52d49a6894022bc567b09f1d3abb3
9f53d7444337454caf2d5ff24028ea40
RX(theta₁₆)
d9d52d49a6894022bc567b09f1d3abb3--9f53d7444337454caf2d5ff24028ea40
2fecd952c9f64a81b06da4e7e07d8128
X
9f53d7444337454caf2d5ff24028ea40--2fecd952c9f64a81b06da4e7e07d8128
2fecd952c9f64a81b06da4e7e07d8128--3362c82484ed4c38b2d8f4d2709943d7
fa6b6882276344b9a9009f3dd6f9a2d1
2fecd952c9f64a81b06da4e7e07d8128--fa6b6882276344b9a9009f3dd6f9a2d1
4a493f557db840d39fda6fbc61d721dc
AddBlock
fa6b6882276344b9a9009f3dd6f9a2d1--4a493f557db840d39fda6fbc61d721dc
4a493f557db840d39fda6fbc61d721dc--83ea8367785042ff96c0213675f2ce46
aaf6f2ecf21042ff973da6faa0972ed1
4502059a38a543429e531ee5cc0a37ae
RX(theta₂)
32eb3e115c5648e4a87d9ee436b01859--4502059a38a543429e531ee5cc0a37ae
f87eb025a0f449b3ae58100c6a23711a
RY(theta₅)
4502059a38a543429e531ee5cc0a37ae--f87eb025a0f449b3ae58100c6a23711a
5c15e12d985b4e50b01635c7b3c572b1
RX(theta₈)
f87eb025a0f449b3ae58100c6a23711a--5c15e12d985b4e50b01635c7b3c572b1
2ba59abe29304829a8097825983892c6
5c15e12d985b4e50b01635c7b3c572b1--2ba59abe29304829a8097825983892c6
18b5651969034937940e57d8fd08d338
X
2ba59abe29304829a8097825983892c6--18b5651969034937940e57d8fd08d338
18b5651969034937940e57d8fd08d338--d451ace732fd4085851610457decb548
4e514677c0de40118cdd501e613b1ccd
RX(theta₁₁)
18b5651969034937940e57d8fd08d338--4e514677c0de40118cdd501e613b1ccd
687986dc27a5401ea532d91cdc9b28b9
RY(theta₁₄)
4e514677c0de40118cdd501e613b1ccd--687986dc27a5401ea532d91cdc9b28b9
0fda9d9f96a8441896c0f3764f46b2be
RX(theta₁₇)
687986dc27a5401ea532d91cdc9b28b9--0fda9d9f96a8441896c0f3764f46b2be
6fc620b332804889bd1fbc43740223dc
0fda9d9f96a8441896c0f3764f46b2be--6fc620b332804889bd1fbc43740223dc
29697de25ac44912a64d9f166acfb1fd
X
6fc620b332804889bd1fbc43740223dc--29697de25ac44912a64d9f166acfb1fd
29697de25ac44912a64d9f166acfb1fd--fa6b6882276344b9a9009f3dd6f9a2d1
849b8f0acb6447c39b8825596c70e77a
29697de25ac44912a64d9f166acfb1fd--849b8f0acb6447c39b8825596c70e77a
849b8f0acb6447c39b8825596c70e77a--aaf6f2ecf21042ff973da6faa0972ed1
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
2bd0ce74ac3840ecbf96360d749f30b0
0
2b8423f8d08d4318a8ece67105b63b9e
2bd0ce74ac3840ecbf96360d749f30b0--2b8423f8d08d4318a8ece67105b63b9e
f22d2291947c42ed8e6956a328d202f4
1
a706932902db44dbaaccaf04110fce81
6e976294c8d04a319868fb2ed417580f
2b8423f8d08d4318a8ece67105b63b9e--6e976294c8d04a319868fb2ed417580f
e996c438a57444a5909ae3e6b6bf5b45
a706932902db44dbaaccaf04110fce81--e996c438a57444a5909ae3e6b6bf5b45
1da7b538ace44deeb3c8c127ee28420f
9f183427cc304d428ee997b6967d5fcb
e996c438a57444a5909ae3e6b6bf5b45--9f183427cc304d428ee997b6967d5fcb
c214b1cced26425680e5e5161042a2d7
1da7b538ace44deeb3c8c127ee28420f--c214b1cced26425680e5e5161042a2d7
448f9ba5ce0e44cb95cf41bb5ce27157
56247ece097a47298b397a3258b23227
f22d2291947c42ed8e6956a328d202f4--56247ece097a47298b397a3258b23227
17449406d4dd4fec90f040e42a4d07fb
2
56247ece097a47298b397a3258b23227--a706932902db44dbaaccaf04110fce81
8767ab06dda34e138184073e1e3e707d
6e976294c8d04a319868fb2ed417580f--8767ab06dda34e138184073e1e3e707d
0a3f1642004e4263a6e976b68893d14a
8767ab06dda34e138184073e1e3e707d--0a3f1642004e4263a6e976b68893d14a
0a3f1642004e4263a6e976b68893d14a--448f9ba5ce0e44cb95cf41bb5ce27157
80b7da21d858426aa647cee48ebb5358
e8417bc0602147e09b3474d75f6627e5
17449406d4dd4fec90f040e42a4d07fb--e8417bc0602147e09b3474d75f6627e5
223fe0bd64bb49d6b902208bce3ffb16
3
fb437088f63241cf97443b41b643034d
e8417bc0602147e09b3474d75f6627e5--fb437088f63241cf97443b41b643034d
28995d51bc9645d2b70bec0e9ab72858
fb437088f63241cf97443b41b643034d--28995d51bc9645d2b70bec0e9ab72858
5b86833b259f449aa0eafb9973cfdb53
28995d51bc9645d2b70bec0e9ab72858--5b86833b259f449aa0eafb9973cfdb53
5b86833b259f449aa0eafb9973cfdb53--80b7da21d858426aa647cee48ebb5358
70566bbeb17c4c98afa57ebc24e77d6a
175fa278adf84183b96cea0ff4fd7e35
223fe0bd64bb49d6b902208bce3ffb16--175fa278adf84183b96cea0ff4fd7e35
1cee5bc85b284e038cc12abaa44966e6
175fa278adf84183b96cea0ff4fd7e35--1cee5bc85b284e038cc12abaa44966e6
3dfc5339d6d54c08a627ad57a95e9ab7
1cee5bc85b284e038cc12abaa44966e6--3dfc5339d6d54c08a627ad57a95e9ab7
3dfc5339d6d54c08a627ad57a95e9ab7--1da7b538ace44deeb3c8c127ee28420f
9f183427cc304d428ee997b6967d5fcb--70566bbeb17c4c98afa57ebc24e77d6a
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
f22f8b44531a4462b362eb2d79f8bf21
0
737d488132f94f81b91eb63ed377e1ef
f22f8b44531a4462b362eb2d79f8bf21--737d488132f94f81b91eb63ed377e1ef
7afbcf8c2d76404daa5bc08cbc72f346
1
904aa6fb67d3466a9114cc86765da220
737d488132f94f81b91eb63ed377e1ef--904aa6fb67d3466a9114cc86765da220
899f4af5385e457bbb50d5b8a61537aa
904aa6fb67d3466a9114cc86765da220--899f4af5385e457bbb50d5b8a61537aa
94de861607a54636949efb2f08e0b5c0
899f4af5385e457bbb50d5b8a61537aa--94de861607a54636949efb2f08e0b5c0
e8f0510c636148499f0e84ae08cfc3c6
1ee577341c30498da40f838c1f640476
PHASE(0.5)
7afbcf8c2d76404daa5bc08cbc72f346--1ee577341c30498da40f838c1f640476
849e2615df984edbabe79c81a38df764
2
1ee577341c30498da40f838c1f640476--737d488132f94f81b91eb63ed377e1ef
f48458bb527d4eacb388587cc3e83728
1ee577341c30498da40f838c1f640476--f48458bb527d4eacb388587cc3e83728
801012d66ab941a6af4e85c96b23883b
f48458bb527d4eacb388587cc3e83728--801012d66ab941a6af4e85c96b23883b
801012d66ab941a6af4e85c96b23883b--e8f0510c636148499f0e84ae08cfc3c6
fa1e14964936465cb66d6d5e4eb7700b
9a56f4037c6444428f3f6e542a695232
849e2615df984edbabe79c81a38df764--9a56f4037c6444428f3f6e542a695232
727dc3d5c5664b34881d85d54396ea4e
3
396f3547b2a64d20932bbfbdc7f64a78
PHASE(0.5)
9a56f4037c6444428f3f6e542a695232--396f3547b2a64d20932bbfbdc7f64a78
396f3547b2a64d20932bbfbdc7f64a78--904aa6fb67d3466a9114cc86765da220
815b70f6ffc94af48a55be6060fd975e
396f3547b2a64d20932bbfbdc7f64a78--815b70f6ffc94af48a55be6060fd975e
815b70f6ffc94af48a55be6060fd975e--fa1e14964936465cb66d6d5e4eb7700b
da5f3e0d7ebb499eb0d666a135a2afd7
eab527d2d50b449dafeef8036a2b3be3
727dc3d5c5664b34881d85d54396ea4e--eab527d2d50b449dafeef8036a2b3be3
00df4a743f03491ba4d7e8937d02cefe
eab527d2d50b449dafeef8036a2b3be3--00df4a743f03491ba4d7e8937d02cefe
83fb407a921e4976838334573352c348
PHASE(0.5)
00df4a743f03491ba4d7e8937d02cefe--83fb407a921e4976838334573352c348
83fb407a921e4976838334573352c348--899f4af5385e457bbb50d5b8a61537aa
83fb407a921e4976838334573352c348--da5f3e0d7ebb499eb0d666a135a2afd7
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