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
55ab67f2ba5742c3a5e57fa0c08b4ff6
0
ec8f2cc89e674f96a1b65bc0cc63ca91
X
55ab67f2ba5742c3a5e57fa0c08b4ff6--ec8f2cc89e674f96a1b65bc0cc63ca91
538e66aa9df94a06b8cd583f52553df9
1
855b9231e9b14275b9bb4ab2df419cb9
ec8f2cc89e674f96a1b65bc0cc63ca91--855b9231e9b14275b9bb4ab2df419cb9
b640788fe14648128dcdccdd1945edd2
2a7ca5099d7d45a7baac9c256295e2a9
Y
538e66aa9df94a06b8cd583f52553df9--2a7ca5099d7d45a7baac9c256295e2a9
2a7ca5099d7d45a7baac9c256295e2a9--b640788fe14648128dcdccdd1945edd2
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
cc7f318986c6479b9cbb5a400970b7c1
0
20c1f178ab7941e0842930e620160a7e
X
cc7f318986c6479b9cbb5a400970b7c1--20c1f178ab7941e0842930e620160a7e
90d46862606246ddbbbf2cc536e36b4b
Y
20c1f178ab7941e0842930e620160a7e--90d46862606246ddbbbf2cc536e36b4b
2aaceca52eaf4c4fbc8dc6c5988c2582
90d46862606246ddbbbf2cc536e36b4b--2aaceca52eaf4c4fbc8dc6c5988c2582
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
e3460f33e6cc480aaa2ea619a43ff5e8
0
19326ede2cbd4545919b78c7513c8879
X
e3460f33e6cc480aaa2ea619a43ff5e8--19326ede2cbd4545919b78c7513c8879
d8be1baa75db41a79992a3c07960234d
1
722915c69215463ca570e650d9e65747
19326ede2cbd4545919b78c7513c8879--722915c69215463ca570e650d9e65747
f8bb0f2b8e65414caa1af8e662ece507
722915c69215463ca570e650d9e65747--f8bb0f2b8e65414caa1af8e662ece507
001e83111fea4f52826ae78c4e5274ec
ca8e4f7229f0496b89aa8124d9123d69
d8be1baa75db41a79992a3c07960234d--ca8e4f7229f0496b89aa8124d9123d69
703ea568622442e9ac249e1a675ba566
Y
ca8e4f7229f0496b89aa8124d9123d69--703ea568622442e9ac249e1a675ba566
703ea568622442e9ac249e1a675ba566--001e83111fea4f52826ae78c4e5274ec
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_1080f6cf75574ca3abe1babc5050d5bf
39daabd24e4f496aa443d279d9e0ca78
0
b433d6ac80ff4d9489e2677e966bc0ba
39daabd24e4f496aa443d279d9e0ca78--b433d6ac80ff4d9489e2677e966bc0ba
664cb7a644094e8bbda5b47249e52fe8
1
2b3d8e8b6390449795c3633210c9af60
b433d6ac80ff4d9489e2677e966bc0ba--2b3d8e8b6390449795c3633210c9af60
bbca78046969415d91b562fb54713aaa
1d5b76cb9a3646aeb7d25f494a41450f
AddBlock
664cb7a644094e8bbda5b47249e52fe8--1d5b76cb9a3646aeb7d25f494a41450f
37bc240deae94793a40e7c1b7e8df47d
2
1d5b76cb9a3646aeb7d25f494a41450f--bbca78046969415d91b562fb54713aaa
b2b62401d83842e2abafd73ce8a48a4c
e1542f5758c04c4db58eccc9f2c5b939
37bc240deae94793a40e7c1b7e8df47d--e1542f5758c04c4db58eccc9f2c5b939
e1542f5758c04c4db58eccc9f2c5b939--b2b62401d83842e2abafd73ce8a48a4c
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_488dbf7ef870461eae93cba966b27c54
cluster_7bc726e8e2fb4379997dfc8da5198439
rx
63cc4ef044f64667b58dc72539d2cc53
0
1e8b3b3684a94d78b1f7aceb76cf4b2b
X
63cc4ef044f64667b58dc72539d2cc53--1e8b3b3684a94d78b1f7aceb76cf4b2b
31b0a55fdd534fdabb242f6aefc2fbdf
1
1f4347e8bb5a4780aa0023ffddc56f8a
1e8b3b3684a94d78b1f7aceb76cf4b2b--1f4347e8bb5a4780aa0023ffddc56f8a
15c46ceda1f147dfb8c32d6a36b252ae
1f4347e8bb5a4780aa0023ffddc56f8a--15c46ceda1f147dfb8c32d6a36b252ae
e895aa4eb2de44049f2987ac950f3fac
15c46ceda1f147dfb8c32d6a36b252ae--e895aa4eb2de44049f2987ac950f3fac
146f0c33717f452fbc4bb5448ca858b0
3b727ac6cdae433997a3aaff73bd6755
Y
31b0a55fdd534fdabb242f6aefc2fbdf--3b727ac6cdae433997a3aaff73bd6755
785fbfe755794c8ea9ad44a7f6ccfa19
2
969d90b0bd314e6c828dc0b951b6e57b
3b727ac6cdae433997a3aaff73bd6755--969d90b0bd314e6c828dc0b951b6e57b
25fa1074dfce40b4b87420b2785a6b21
HamEvo
969d90b0bd314e6c828dc0b951b6e57b--25fa1074dfce40b4b87420b2785a6b21
25fa1074dfce40b4b87420b2785a6b21--146f0c33717f452fbc4bb5448ca858b0
9404ac7f0e824174bea8e426e1334a60
706413c948b241bb904d777f9cb41d89
RX(x)
785fbfe755794c8ea9ad44a7f6ccfa19--706413c948b241bb904d777f9cb41d89
bc82852d5b684d729e37e18a8bf3e4db
3
d9c9d0c359d240d1a88c33c89a548151
706413c948b241bb904d777f9cb41d89--d9c9d0c359d240d1a88c33c89a548151
50ff58947b4e44aaa18db0fba19bc456
t = 10
d9c9d0c359d240d1a88c33c89a548151--50ff58947b4e44aaa18db0fba19bc456
50ff58947b4e44aaa18db0fba19bc456--9404ac7f0e824174bea8e426e1334a60
2fcaed10fa144b3da04452fcfc3261b6
355e1e28c9eb46d78751e1cb507a670a
RX(0.5)
bc82852d5b684d729e37e18a8bf3e4db--355e1e28c9eb46d78751e1cb507a670a
c5373357734747b09f60686e4c6c3093
X
355e1e28c9eb46d78751e1cb507a670a--c5373357734747b09f60686e4c6c3093
c5373357734747b09f60686e4c6c3093--d9c9d0c359d240d1a88c33c89a548151
34c20c2c6aa14aa2ab4814dd1b66e6e7
c5373357734747b09f60686e4c6c3093--34c20c2c6aa14aa2ab4814dd1b66e6e7
34c20c2c6aa14aa2ab4814dd1b66e6e7--2fcaed10fa144b3da04452fcfc3261b6
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_e6ace07af1ba4c78872a354f7e499445
HEA
cluster_ef7836e7d5754f6d9e047e37677b6da5
Tower Fourier FM
03b7a02610f0480d832c9a9a8db48df9
0
b377d20e504b40a89625787eb7ced080
RX(1.0*phi)
03b7a02610f0480d832c9a9a8db48df9--b377d20e504b40a89625787eb7ced080
d627602177af43e6a3a179e5f831c5a6
1
f18c68d7a18b4995a46c75f4b09cc044
RX(theta₀)
b377d20e504b40a89625787eb7ced080--f18c68d7a18b4995a46c75f4b09cc044
2ec4f9850c1943a78d770ce05fc1d8da
RY(theta₄)
f18c68d7a18b4995a46c75f4b09cc044--2ec4f9850c1943a78d770ce05fc1d8da
b11737dc50a74dedbb242490730703c8
RX(theta₈)
2ec4f9850c1943a78d770ce05fc1d8da--b11737dc50a74dedbb242490730703c8
36c510ab40b74964aaf1a564ee8f5eaa
b11737dc50a74dedbb242490730703c8--36c510ab40b74964aaf1a564ee8f5eaa
39de27fe1e0d46d69ed3637babd58ae2
36c510ab40b74964aaf1a564ee8f5eaa--39de27fe1e0d46d69ed3637babd58ae2
966e43092f534bab8379aecc5b514ff7
RX(theta₁₂)
39de27fe1e0d46d69ed3637babd58ae2--966e43092f534bab8379aecc5b514ff7
a684007249a641b896b345adca954537
RY(theta₁₆)
966e43092f534bab8379aecc5b514ff7--a684007249a641b896b345adca954537
d6f3dfbda40f40e4b7cd7b7f78a0c5dc
RX(theta₂₀)
a684007249a641b896b345adca954537--d6f3dfbda40f40e4b7cd7b7f78a0c5dc
d6d04dc7fa434be5b64bf4080813564f
d6f3dfbda40f40e4b7cd7b7f78a0c5dc--d6d04dc7fa434be5b64bf4080813564f
45ad0e752a0a4679878a2eddfe8789b6
d6d04dc7fa434be5b64bf4080813564f--45ad0e752a0a4679878a2eddfe8789b6
dd28e573986c4af4a2132c48529ea33b
45ad0e752a0a4679878a2eddfe8789b6--dd28e573986c4af4a2132c48529ea33b
e050fc96c8fc45f9a27af464b8396f80
690abb8d24ae4054ada07a03edc44b9c
RX(2.0*phi)
d627602177af43e6a3a179e5f831c5a6--690abb8d24ae4054ada07a03edc44b9c
a4d337972d3e4e82b443ad1b9df808c7
2
559fa5f900204dcf8d3681b0e330e18f
RX(theta₁)
690abb8d24ae4054ada07a03edc44b9c--559fa5f900204dcf8d3681b0e330e18f
9ba551442dfe4b2ab3138372872ff798
RY(theta₅)
559fa5f900204dcf8d3681b0e330e18f--9ba551442dfe4b2ab3138372872ff798
3843037c6b0842ac89e13e6a2d00cb6b
RX(theta₉)
9ba551442dfe4b2ab3138372872ff798--3843037c6b0842ac89e13e6a2d00cb6b
3a7de11347e548fe8b63f1dd3f88579a
X
3843037c6b0842ac89e13e6a2d00cb6b--3a7de11347e548fe8b63f1dd3f88579a
3a7de11347e548fe8b63f1dd3f88579a--36c510ab40b74964aaf1a564ee8f5eaa
a21b64156d734222a58a84b7ad251f68
3a7de11347e548fe8b63f1dd3f88579a--a21b64156d734222a58a84b7ad251f68
15b636d1b7d245dd83de3b6138d288ed
RX(theta₁₃)
a21b64156d734222a58a84b7ad251f68--15b636d1b7d245dd83de3b6138d288ed
8a9bb31e47b64ceea40d5fe9d2be0d83
RY(theta₁₇)
15b636d1b7d245dd83de3b6138d288ed--8a9bb31e47b64ceea40d5fe9d2be0d83
88433ade2c8c4a18a4b453162ba5cb00
RX(theta₂₁)
8a9bb31e47b64ceea40d5fe9d2be0d83--88433ade2c8c4a18a4b453162ba5cb00
69e21226edd64ade8bd5527687478ac6
X
88433ade2c8c4a18a4b453162ba5cb00--69e21226edd64ade8bd5527687478ac6
69e21226edd64ade8bd5527687478ac6--d6d04dc7fa434be5b64bf4080813564f
d3098d0461fe42aba2e89519cec66deb
69e21226edd64ade8bd5527687478ac6--d3098d0461fe42aba2e89519cec66deb
d3098d0461fe42aba2e89519cec66deb--e050fc96c8fc45f9a27af464b8396f80
8d9254cbf0ba4329acb4d2f9509c0577
b5403762dd6c44a69ef62d223f51579b
RX(3.0*phi)
a4d337972d3e4e82b443ad1b9df808c7--b5403762dd6c44a69ef62d223f51579b
ff0ea313008a4abc8eed19e30cc524e7
3
7767cd6a079942b798a5fe1d7d4b7e88
RX(theta₂)
b5403762dd6c44a69ef62d223f51579b--7767cd6a079942b798a5fe1d7d4b7e88
3d8a8c6c95a34b699a43cd9bc1205913
RY(theta₆)
7767cd6a079942b798a5fe1d7d4b7e88--3d8a8c6c95a34b699a43cd9bc1205913
db077b85ccff432fb0ce9b6f2a198c83
RX(theta₁₀)
3d8a8c6c95a34b699a43cd9bc1205913--db077b85ccff432fb0ce9b6f2a198c83
f15bb383ac0f4a2db06f195c2c4cdf06
db077b85ccff432fb0ce9b6f2a198c83--f15bb383ac0f4a2db06f195c2c4cdf06
c694909112004032a467592b2f35d981
X
f15bb383ac0f4a2db06f195c2c4cdf06--c694909112004032a467592b2f35d981
c694909112004032a467592b2f35d981--a21b64156d734222a58a84b7ad251f68
7c72366ba8af4c18806587c59ed4bb86
RX(theta₁₄)
c694909112004032a467592b2f35d981--7c72366ba8af4c18806587c59ed4bb86
4ec30092b9af47f39d6120332b1c3590
RY(theta₁₈)
7c72366ba8af4c18806587c59ed4bb86--4ec30092b9af47f39d6120332b1c3590
7c00359de62a4d909c92970bc1060b02
RX(theta₂₂)
4ec30092b9af47f39d6120332b1c3590--7c00359de62a4d909c92970bc1060b02
d5fb2b382e3b4a29b507d010e6108fb4
7c00359de62a4d909c92970bc1060b02--d5fb2b382e3b4a29b507d010e6108fb4
bd4ae7f5414147afa50b78d6969541d4
X
d5fb2b382e3b4a29b507d010e6108fb4--bd4ae7f5414147afa50b78d6969541d4
bd4ae7f5414147afa50b78d6969541d4--d3098d0461fe42aba2e89519cec66deb
bd4ae7f5414147afa50b78d6969541d4--8d9254cbf0ba4329acb4d2f9509c0577
c6fe4b6b233f4445a437d83b15ea49a1
addad6bdeaa74902bb830255d8d46bc8
RX(4.0*phi)
ff0ea313008a4abc8eed19e30cc524e7--addad6bdeaa74902bb830255d8d46bc8
0a98a20d97264409a7be4e0f4c231b75
RX(theta₃)
addad6bdeaa74902bb830255d8d46bc8--0a98a20d97264409a7be4e0f4c231b75
f1b4a2b274a742bcabfdeac92ae4a89f
RY(theta₇)
0a98a20d97264409a7be4e0f4c231b75--f1b4a2b274a742bcabfdeac92ae4a89f
2415450653f34d6793aac297942493f7
RX(theta₁₁)
f1b4a2b274a742bcabfdeac92ae4a89f--2415450653f34d6793aac297942493f7
e4b44c25e2f84b6483462a72b171b60d
X
2415450653f34d6793aac297942493f7--e4b44c25e2f84b6483462a72b171b60d
e4b44c25e2f84b6483462a72b171b60d--f15bb383ac0f4a2db06f195c2c4cdf06
13dd78520e56463f9a3e4e4d4636b941
e4b44c25e2f84b6483462a72b171b60d--13dd78520e56463f9a3e4e4d4636b941
777088eb8b2849ea834d1888493faf59
RX(theta₁₅)
13dd78520e56463f9a3e4e4d4636b941--777088eb8b2849ea834d1888493faf59
9c816ad983bb4557bf19aac57d3e51a0
RY(theta₁₉)
777088eb8b2849ea834d1888493faf59--9c816ad983bb4557bf19aac57d3e51a0
f58d39d24f0e4e96b343f1a692f0f564
RX(theta₂₃)
9c816ad983bb4557bf19aac57d3e51a0--f58d39d24f0e4e96b343f1a692f0f564
f7d087f877c64614a6b18eaadbfa109a
X
f58d39d24f0e4e96b343f1a692f0f564--f7d087f877c64614a6b18eaadbfa109a
f7d087f877c64614a6b18eaadbfa109a--d5fb2b382e3b4a29b507d010e6108fb4
80ed6eaddda543ce9724b81c8cdd4033
f7d087f877c64614a6b18eaadbfa109a--80ed6eaddda543ce9724b81c8cdd4033
80ed6eaddda543ce9724b81c8cdd4033--c6fe4b6b233f4445a437d83b15ea49a1
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_84708c533bdc48edbbf3ad2b521bf27f
Obs.
cluster_ecc0be093a874eada1d7f7a12a64357d
cluster_25b07d0065994613a133544b0659418c
HEA
3a92b539f7c4425e8803a98f647e7957
0
bebe9dc526574eeab38f12b2675f50a8
RX(theta₀)
3a92b539f7c4425e8803a98f647e7957--bebe9dc526574eeab38f12b2675f50a8
c54f245afe5c4493a85e91b74efce215
1
db1b940baf724d2b9e5a3e396cd720c3
RY(theta₃)
bebe9dc526574eeab38f12b2675f50a8--db1b940baf724d2b9e5a3e396cd720c3
247c5c9318af4a0b8feedeea409e47eb
RX(theta₆)
db1b940baf724d2b9e5a3e396cd720c3--247c5c9318af4a0b8feedeea409e47eb
7f84b7581cec4a82938250898c2cac8b
247c5c9318af4a0b8feedeea409e47eb--7f84b7581cec4a82938250898c2cac8b
9222101ad748493d9fdd883a089e3872
7f84b7581cec4a82938250898c2cac8b--9222101ad748493d9fdd883a089e3872
e805fac4dac745829e8181d7128c6ea5
RX(theta₉)
9222101ad748493d9fdd883a089e3872--e805fac4dac745829e8181d7128c6ea5
015f6db13bb742aca5aa0c8069fb9e19
RY(theta₁₂)
e805fac4dac745829e8181d7128c6ea5--015f6db13bb742aca5aa0c8069fb9e19
86454cc5a5c74cf7ab80a85ef1ca4ea3
RX(theta₁₅)
015f6db13bb742aca5aa0c8069fb9e19--86454cc5a5c74cf7ab80a85ef1ca4ea3
b41828e154b34d4b9f9b87a7a0573c9e
86454cc5a5c74cf7ab80a85ef1ca4ea3--b41828e154b34d4b9f9b87a7a0573c9e
9904dc7247964e11af6713d5e76a15b2
b41828e154b34d4b9f9b87a7a0573c9e--9904dc7247964e11af6713d5e76a15b2
5b584f54ceae48c69521974259b3de67
9904dc7247964e11af6713d5e76a15b2--5b584f54ceae48c69521974259b3de67
ed14bf419d33418c9a1a1f1594e57da2
5b584f54ceae48c69521974259b3de67--ed14bf419d33418c9a1a1f1594e57da2
82536e352ac14ba99f89bffab58d379e
66e6e2327745452eaf0da949b3ae9ebf
RX(theta₁)
c54f245afe5c4493a85e91b74efce215--66e6e2327745452eaf0da949b3ae9ebf
15f4a9a15d204a6680dccdbfd768cf3f
2
073e83029191411dafbdc478d4b6ce10
RY(theta₄)
66e6e2327745452eaf0da949b3ae9ebf--073e83029191411dafbdc478d4b6ce10
8cd27a2404be44bead879ee3d59e2f87
RX(theta₇)
073e83029191411dafbdc478d4b6ce10--8cd27a2404be44bead879ee3d59e2f87
adb29651250a4d49bb71dcd79cd5e21f
X
8cd27a2404be44bead879ee3d59e2f87--adb29651250a4d49bb71dcd79cd5e21f
adb29651250a4d49bb71dcd79cd5e21f--7f84b7581cec4a82938250898c2cac8b
58670a7e03ab41c48b82a166bbe571ab
adb29651250a4d49bb71dcd79cd5e21f--58670a7e03ab41c48b82a166bbe571ab
856af072ab0443ac817816dff80db65b
RX(theta₁₀)
58670a7e03ab41c48b82a166bbe571ab--856af072ab0443ac817816dff80db65b
598b4648f54a4992a2507ef78c60a183
RY(theta₁₃)
856af072ab0443ac817816dff80db65b--598b4648f54a4992a2507ef78c60a183
04641162e88540dd8bc002e8738313f2
RX(theta₁₆)
598b4648f54a4992a2507ef78c60a183--04641162e88540dd8bc002e8738313f2
b4b65c6df125459ca048a49a99cf7dd5
X
04641162e88540dd8bc002e8738313f2--b4b65c6df125459ca048a49a99cf7dd5
b4b65c6df125459ca048a49a99cf7dd5--b41828e154b34d4b9f9b87a7a0573c9e
4378223df9404475a8aff45db923d352
b4b65c6df125459ca048a49a99cf7dd5--4378223df9404475a8aff45db923d352
6335289d9b8d404682dd1529e58594e5
AddBlock
4378223df9404475a8aff45db923d352--6335289d9b8d404682dd1529e58594e5
6335289d9b8d404682dd1529e58594e5--82536e352ac14ba99f89bffab58d379e
888e37bfd53343acae63da50aa0a75c7
08225354d5e94e12a0c6250a3a13605d
RX(theta₂)
15f4a9a15d204a6680dccdbfd768cf3f--08225354d5e94e12a0c6250a3a13605d
b85979ab27f448a0afea298bce3793a7
RY(theta₅)
08225354d5e94e12a0c6250a3a13605d--b85979ab27f448a0afea298bce3793a7
b0fc1c85ca654426a794c4b4dc61b491
RX(theta₈)
b85979ab27f448a0afea298bce3793a7--b0fc1c85ca654426a794c4b4dc61b491
8d98eb3e554b484da73722aee93768c2
b0fc1c85ca654426a794c4b4dc61b491--8d98eb3e554b484da73722aee93768c2
7d20d4b590004d44937ddde0d0386385
X
8d98eb3e554b484da73722aee93768c2--7d20d4b590004d44937ddde0d0386385
7d20d4b590004d44937ddde0d0386385--58670a7e03ab41c48b82a166bbe571ab
ff56febca827401d80e1fa486010a4ea
RX(theta₁₁)
7d20d4b590004d44937ddde0d0386385--ff56febca827401d80e1fa486010a4ea
3d857e53ec834453a073a5aceeb00254
RY(theta₁₄)
ff56febca827401d80e1fa486010a4ea--3d857e53ec834453a073a5aceeb00254
e7027717e0344e5ba76ae7f76fd10267
RX(theta₁₇)
3d857e53ec834453a073a5aceeb00254--e7027717e0344e5ba76ae7f76fd10267
02c9c80108244506b946bd6115d9a9ff
e7027717e0344e5ba76ae7f76fd10267--02c9c80108244506b946bd6115d9a9ff
dbea29b6d6bb46dead7c4f2b94b61b5f
X
02c9c80108244506b946bd6115d9a9ff--dbea29b6d6bb46dead7c4f2b94b61b5f
dbea29b6d6bb46dead7c4f2b94b61b5f--4378223df9404475a8aff45db923d352
60f130cdc12b4955a5f5bd084c08c414
dbea29b6d6bb46dead7c4f2b94b61b5f--60f130cdc12b4955a5f5bd084c08c414
60f130cdc12b4955a5f5bd084c08c414--888e37bfd53343acae63da50aa0a75c7
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
fde8579bc30245a4a58982fd62c344c1
0
85f2133b80aa47e18b977420e08a7a8e
fde8579bc30245a4a58982fd62c344c1--85f2133b80aa47e18b977420e08a7a8e
b5da44f1a1e14439aabb669f9e71de01
1
84ae80d681324285bc7cc38cbb186272
063de572ecc540f4936e565807df3986
85f2133b80aa47e18b977420e08a7a8e--063de572ecc540f4936e565807df3986
1563db82439a4b0d900e572ae4036560
84ae80d681324285bc7cc38cbb186272--1563db82439a4b0d900e572ae4036560
a1077a7b020b45d699c65d6c5e7543e8
81266a3d7233437190fbb7e066e15043
1563db82439a4b0d900e572ae4036560--81266a3d7233437190fbb7e066e15043
61b8a4f2d72f478b95d41cdbb781cfa9
a1077a7b020b45d699c65d6c5e7543e8--61b8a4f2d72f478b95d41cdbb781cfa9
6a24a9dab9bd403e956ff3a385eb68f6
710d0b59b6b0400f8c2fcb8b88d020fa
b5da44f1a1e14439aabb669f9e71de01--710d0b59b6b0400f8c2fcb8b88d020fa
db5a5509205e4173bbc8a7acc323a124
2
710d0b59b6b0400f8c2fcb8b88d020fa--84ae80d681324285bc7cc38cbb186272
cc5754ea69814d1a936385ebcabdd6fb
063de572ecc540f4936e565807df3986--cc5754ea69814d1a936385ebcabdd6fb
9e2955d13ac946bfbfb1db1272668bce
cc5754ea69814d1a936385ebcabdd6fb--9e2955d13ac946bfbfb1db1272668bce
9e2955d13ac946bfbfb1db1272668bce--6a24a9dab9bd403e956ff3a385eb68f6
584a78280ae34d2f91b55c37fb296b01
11191d4d21574002a0446be9dd64067d
db5a5509205e4173bbc8a7acc323a124--11191d4d21574002a0446be9dd64067d
e260f702843e41a29e8fe86211d47574
3
bb0c1c982d214d2d9af453fb1535143e
11191d4d21574002a0446be9dd64067d--bb0c1c982d214d2d9af453fb1535143e
a228c96cd2ed49f98b5d6436d5d99b7f
bb0c1c982d214d2d9af453fb1535143e--a228c96cd2ed49f98b5d6436d5d99b7f
88799891b78b4b219df974db200f3afb
a228c96cd2ed49f98b5d6436d5d99b7f--88799891b78b4b219df974db200f3afb
88799891b78b4b219df974db200f3afb--584a78280ae34d2f91b55c37fb296b01
d0dd428db45a400297f88ff5fdddc879
c6e287a5e7e94bf7a9a7afe2350ad06a
e260f702843e41a29e8fe86211d47574--c6e287a5e7e94bf7a9a7afe2350ad06a
99d23c44194843cd80a6a3c055da7b78
c6e287a5e7e94bf7a9a7afe2350ad06a--99d23c44194843cd80a6a3c055da7b78
128af50ae65840ca9d216d8ac24b44cc
99d23c44194843cd80a6a3c055da7b78--128af50ae65840ca9d216d8ac24b44cc
128af50ae65840ca9d216d8ac24b44cc--a1077a7b020b45d699c65d6c5e7543e8
81266a3d7233437190fbb7e066e15043--d0dd428db45a400297f88ff5fdddc879
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
7e8abf68d2e4496fb2df4e0d9cf536dc
0
7c3104625c85499d8dcd88f05a185880
7e8abf68d2e4496fb2df4e0d9cf536dc--7c3104625c85499d8dcd88f05a185880
c293b5de65c34b1d9844967a815fb90e
1
dcc6f422fb5642e389d6e527a794493e
7c3104625c85499d8dcd88f05a185880--dcc6f422fb5642e389d6e527a794493e
1ee350e06f044988a10e791d74ffc3d1
dcc6f422fb5642e389d6e527a794493e--1ee350e06f044988a10e791d74ffc3d1
840774a502ff47a1ab314b7a449894d5
1ee350e06f044988a10e791d74ffc3d1--840774a502ff47a1ab314b7a449894d5
c8fa5b9654db4e1da14299d2f6456888
dd2fdbde3b1c40d8960beabe23d20d49
PHASE(0.5)
c293b5de65c34b1d9844967a815fb90e--dd2fdbde3b1c40d8960beabe23d20d49
850002b06bd54ca28b8b6d5dc1915ee3
2
dd2fdbde3b1c40d8960beabe23d20d49--7c3104625c85499d8dcd88f05a185880
b07204ae39294c20a418b31b0b378cbd
dd2fdbde3b1c40d8960beabe23d20d49--b07204ae39294c20a418b31b0b378cbd
d694acb208904434afc96c261570ead9
b07204ae39294c20a418b31b0b378cbd--d694acb208904434afc96c261570ead9
d694acb208904434afc96c261570ead9--c8fa5b9654db4e1da14299d2f6456888
a9ede4bf98d2457c8a0dd49b74beeeb5
1f7d62c777fd47d08c92615ffe138561
850002b06bd54ca28b8b6d5dc1915ee3--1f7d62c777fd47d08c92615ffe138561
9427d4f39b5d4baebbe99f9aa16c32ec
3
f1d57645f4544651b84b90e1676e32e7
PHASE(0.5)
1f7d62c777fd47d08c92615ffe138561--f1d57645f4544651b84b90e1676e32e7
f1d57645f4544651b84b90e1676e32e7--dcc6f422fb5642e389d6e527a794493e
f7c4abb9709141a0ba66026de2280816
f1d57645f4544651b84b90e1676e32e7--f7c4abb9709141a0ba66026de2280816
f7c4abb9709141a0ba66026de2280816--a9ede4bf98d2457c8a0dd49b74beeeb5
f723803f0ab141a197500be36ac9021a
eae2bbea0adb4446b7536b91e5b81771
9427d4f39b5d4baebbe99f9aa16c32ec--eae2bbea0adb4446b7536b91e5b81771
7e1916efa04f410fb3a598b728303daf
eae2bbea0adb4446b7536b91e5b81771--7e1916efa04f410fb3a598b728303daf
ff7ce3b4fea34a238c71f7105e2e1ef5
PHASE(0.5)
7e1916efa04f410fb3a598b728303daf--ff7ce3b4fea34a238c71f7105e2e1ef5
ff7ce3b4fea34a238c71f7105e2e1ef5--1ee350e06f044988a10e791d74ffc3d1
ff7ce3b4fea34a238c71f7105e2e1ef5--f723803f0ab141a197500be36ac9021a
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