Skip to content

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 7cf6f3edd3444e42b07d650abd1a1d43 0 60edd5a1b8e748a9ac59298dcae8cb89 X 7cf6f3edd3444e42b07d650abd1a1d43--60edd5a1b8e748a9ac59298dcae8cb89 61f94b9d6ab74049b00dafa6d8d10a8d 1 ea9e11d3ca5c4043bc03f89e9a6b5d6d 60edd5a1b8e748a9ac59298dcae8cb89--ea9e11d3ca5c4043bc03f89e9a6b5d6d ac3cf510dded47cab1952151ab7e2746 0b9ce05ba94243fcbcf3688c49524d87 Y 61f94b9d6ab74049b00dafa6d8d10a8d--0b9ce05ba94243fcbcf3688c49524d87 0b9ce05ba94243fcbcf3688c49524d87--ac3cf510dded47cab1952151ab7e2746
from qadence import X, Y, chain
from qadence.draw import display

b = chain(X(0), Y(0))
%3 22ead751f86b4aa782f5c2029d1b6bac 0 6f9e0be05fab43b5ac02894a6381a8e0 X 22ead751f86b4aa782f5c2029d1b6bac--6f9e0be05fab43b5ac02894a6381a8e0 b10993b9025f4b728ef6fcf6c9785a43 Y 6f9e0be05fab43b5ac02894a6381a8e0--b10993b9025f4b728ef6fcf6c9785a43 e4c2cf3f5f88486dbeab34637e7fad1e b10993b9025f4b728ef6fcf6c9785a43--e4c2cf3f5f88486dbeab34637e7fad1e
from qadence import X, Y, chain
from qadence.draw import display

b = chain(X(0), Y(1))
%3 e4fe3bfd21564ccb91067a7f9e8619df 0 8f52b775d6a64c129a1820c639ba1979 X e4fe3bfd21564ccb91067a7f9e8619df--8f52b775d6a64c129a1820c639ba1979 dc6ef659b63e4cc0ac2a07961b2eda66 1 a28a9bdecf76464b8d7f70706439f9be 8f52b775d6a64c129a1820c639ba1979--a28a9bdecf76464b8d7f70706439f9be 49e4a9382709452bbb0c8087ba9c4634 a28a9bdecf76464b8d7f70706439f9be--49e4a9382709452bbb0c8087ba9c4634 9f942f4eb74f481f8d6410051cc385f0 6d3d8f2ee4b749208d9cb299cd74a3f9 dc6ef659b63e4cc0ac2a07961b2eda66--6d3d8f2ee4b749208d9cb299cd74a3f9 c2ebca313df54e8a8f2f630077632db1 Y 6d3d8f2ee4b749208d9cb299cd74a3f9--c2ebca313df54e8a8f2f630077632db1 c2ebca313df54e8a8f2f630077632db1--9f942f4eb74f481f8d6410051cc385f0
from qadence import X, Y, add
from qadence.draw import display

b = add(X(0), Y(1), X(2))
%3 cluster_4a2cf91dfbd7484aa8969a215dfda05f f5571b6037c24c5eab3c0a0580c3b1b3 0 303a5ff36fcd4ec8bcfdfbf55e7fb0f3 f5571b6037c24c5eab3c0a0580c3b1b3--303a5ff36fcd4ec8bcfdfbf55e7fb0f3 baadd5943af84602b8f8052e85881e9d 1 e7efe518119649bf9fe1ded452d58d81 303a5ff36fcd4ec8bcfdfbf55e7fb0f3--e7efe518119649bf9fe1ded452d58d81 e3f1313e7494445caed0cb4fecdc603b badbb86bc2a24a3ebb27d439a486070a AddBlock baadd5943af84602b8f8052e85881e9d--badbb86bc2a24a3ebb27d439a486070a c5fe94152a2b4cd1adc8d891567706dd 2 badbb86bc2a24a3ebb27d439a486070a--e3f1313e7494445caed0cb4fecdc603b 295ab81016c148b2b99965e59de8e1c8 502ddbc22097416d861960465bd6fa15 c5fe94152a2b4cd1adc8d891567706dd--502ddbc22097416d861960465bd6fa15 502ddbc22097416d861960465bd6fa15--295ab81016c148b2b99965e59de8e1c8
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_987e739ae170494fa80743c4c8096b65 cluster_4c1ee9e1b2fe48a18b667e5664700446 rx b4a2be5d5d964f648088c9cd8adcd629 0 fe6ce7379dce421fa807378968e3d988 X b4a2be5d5d964f648088c9cd8adcd629--fe6ce7379dce421fa807378968e3d988 eef2acef7fe541099b0e88a04a17b7de 1 32025657dfc6434a88374afedea40ec9 fe6ce7379dce421fa807378968e3d988--32025657dfc6434a88374afedea40ec9 6df5fa9e58e947b3b252af4c04561667 32025657dfc6434a88374afedea40ec9--6df5fa9e58e947b3b252af4c04561667 3a028e8bc24b476ba5782b1425b10b1e 6df5fa9e58e947b3b252af4c04561667--3a028e8bc24b476ba5782b1425b10b1e d86238cb09724c0381736e18015f6dd7 57989b05c782418081fdea4717d5e0de Y eef2acef7fe541099b0e88a04a17b7de--57989b05c782418081fdea4717d5e0de 77767975b1d744e88e984a44e6b43483 2 96011218185f4ca9a2163bf5e8c26eb9 57989b05c782418081fdea4717d5e0de--96011218185f4ca9a2163bf5e8c26eb9 5ee3d2aa8c574095adbae64b1d1a1ee0 HamEvo 96011218185f4ca9a2163bf5e8c26eb9--5ee3d2aa8c574095adbae64b1d1a1ee0 5ee3d2aa8c574095adbae64b1d1a1ee0--d86238cb09724c0381736e18015f6dd7 27d10c4b424d49859c06813145ea5c45 b0f974afe7544e3eb3b734f9bbf3340d RX(x) 77767975b1d744e88e984a44e6b43483--b0f974afe7544e3eb3b734f9bbf3340d dbb97f1a83be44b09986508940ac7700 3 512a5da78a73424f9ed31bf88c48ab14 b0f974afe7544e3eb3b734f9bbf3340d--512a5da78a73424f9ed31bf88c48ab14 a265ea96626c4e97b15cf86c01ac06ee t = 10 512a5da78a73424f9ed31bf88c48ab14--a265ea96626c4e97b15cf86c01ac06ee a265ea96626c4e97b15cf86c01ac06ee--27d10c4b424d49859c06813145ea5c45 330fd991fb21405a862ed6d6d4f9547c 7baf6fb1f02c4eb2b06d90ceb4ec9a28 RX(0.5) dbb97f1a83be44b09986508940ac7700--7baf6fb1f02c4eb2b06d90ceb4ec9a28 399705d27b2749dd986ca3ec210093b4 X 7baf6fb1f02c4eb2b06d90ceb4ec9a28--399705d27b2749dd986ca3ec210093b4 399705d27b2749dd986ca3ec210093b4--512a5da78a73424f9ed31bf88c48ab14 a756a833ceeb47a3a93692f3d2637f49 399705d27b2749dd986ca3ec210093b4--a756a833ceeb47a3a93692f3d2637f49 a756a833ceeb47a3a93692f3d2637f49--330fd991fb21405a862ed6d6d4f9547c
from qadence import feature_map, hea, chain

block = chain(feature_map(4, reupload_scaling="Tower"), hea(4,2))
%3 cluster_3a674d9f11ef49e8b2cc0ade8f43b76b HEA cluster_835852c5c3d047f9a9603e9a567e660b Tower Fourier FM d6c53826b0184cc2839418b5556e8250 0 828398ca535a4ddd833ce41ec8172788 RX(1.0*phi) d6c53826b0184cc2839418b5556e8250--828398ca535a4ddd833ce41ec8172788 2bb7ebc7359c4f99b641784bdefaeec6 1 3db4365c1d354acc90d7871a9dc049be RX(theta₀) 828398ca535a4ddd833ce41ec8172788--3db4365c1d354acc90d7871a9dc049be a05aa2029fb446e9b3c81a0cd19a08b2 RY(theta₄) 3db4365c1d354acc90d7871a9dc049be--a05aa2029fb446e9b3c81a0cd19a08b2 e19d87cb97f841498be73b4163149b27 RX(theta₈) a05aa2029fb446e9b3c81a0cd19a08b2--e19d87cb97f841498be73b4163149b27 5cf77012128a41f59bbf6a2fd16d2f6d e19d87cb97f841498be73b4163149b27--5cf77012128a41f59bbf6a2fd16d2f6d 6bec0e146b284dce8c467ee5f1513282 5cf77012128a41f59bbf6a2fd16d2f6d--6bec0e146b284dce8c467ee5f1513282 30d8011d1695445b9ac1d3e9586a5a65 RX(theta₁₂) 6bec0e146b284dce8c467ee5f1513282--30d8011d1695445b9ac1d3e9586a5a65 83ef2ee565684060960bb68738b7f090 RY(theta₁₆) 30d8011d1695445b9ac1d3e9586a5a65--83ef2ee565684060960bb68738b7f090 3052890a73064db8ba230f57f7d1b3e5 RX(theta₂₀) 83ef2ee565684060960bb68738b7f090--3052890a73064db8ba230f57f7d1b3e5 9399d58f763c4e2dbda8ef408b2266cc 3052890a73064db8ba230f57f7d1b3e5--9399d58f763c4e2dbda8ef408b2266cc 581ab75e5b9843768011cf62992f3d3c 9399d58f763c4e2dbda8ef408b2266cc--581ab75e5b9843768011cf62992f3d3c 4f489c4506be48cd940cc8290b3c6ed8 581ab75e5b9843768011cf62992f3d3c--4f489c4506be48cd940cc8290b3c6ed8 bc78ff8e68a94bafbac8d30d9606af24 1f894352c05646c79ceaa5969213b1c7 RX(2.0*phi) 2bb7ebc7359c4f99b641784bdefaeec6--1f894352c05646c79ceaa5969213b1c7 cf4b07e69f464a2c8f4a98cbbb9918ea 2 5a504974c45a448fa71043e71ee7fc67 RX(theta₁) 1f894352c05646c79ceaa5969213b1c7--5a504974c45a448fa71043e71ee7fc67 be26bc901c884c6b9758468817d57277 RY(theta₅) 5a504974c45a448fa71043e71ee7fc67--be26bc901c884c6b9758468817d57277 bfe4c17bd00f48d1b8cbd6b2a9abfb5d RX(theta₉) be26bc901c884c6b9758468817d57277--bfe4c17bd00f48d1b8cbd6b2a9abfb5d 5c11d40f02bc4e3d8552e5a5738da55e X bfe4c17bd00f48d1b8cbd6b2a9abfb5d--5c11d40f02bc4e3d8552e5a5738da55e 5c11d40f02bc4e3d8552e5a5738da55e--5cf77012128a41f59bbf6a2fd16d2f6d f358944f1ddd4f7d9f7397cdbf14e7ca 5c11d40f02bc4e3d8552e5a5738da55e--f358944f1ddd4f7d9f7397cdbf14e7ca 7de3e542553f40c697105e4c42a00143 RX(theta₁₃) f358944f1ddd4f7d9f7397cdbf14e7ca--7de3e542553f40c697105e4c42a00143 2c4121c0c29b472898d7a79f656b9499 RY(theta₁₇) 7de3e542553f40c697105e4c42a00143--2c4121c0c29b472898d7a79f656b9499 e851fd05027f4a8b889a151cb0d7e1a4 RX(theta₂₁) 2c4121c0c29b472898d7a79f656b9499--e851fd05027f4a8b889a151cb0d7e1a4 f77f15e5f5ca4cdd9786a012178f7779 X e851fd05027f4a8b889a151cb0d7e1a4--f77f15e5f5ca4cdd9786a012178f7779 f77f15e5f5ca4cdd9786a012178f7779--9399d58f763c4e2dbda8ef408b2266cc febae5316c164998aad442f2b86127a0 f77f15e5f5ca4cdd9786a012178f7779--febae5316c164998aad442f2b86127a0 febae5316c164998aad442f2b86127a0--bc78ff8e68a94bafbac8d30d9606af24 640a4d9fc62e4204bc3a2885c0007c7d 1c3643b15ed74a5cb3d3ce3d5a761cf0 RX(3.0*phi) cf4b07e69f464a2c8f4a98cbbb9918ea--1c3643b15ed74a5cb3d3ce3d5a761cf0 b042f76fd7964fd68467860d8b365ba2 3 cd9156cb29514c19bc752f8741d4ee7a RX(theta₂) 1c3643b15ed74a5cb3d3ce3d5a761cf0--cd9156cb29514c19bc752f8741d4ee7a fbef477995a34eb392575e7336dd4ce0 RY(theta₆) cd9156cb29514c19bc752f8741d4ee7a--fbef477995a34eb392575e7336dd4ce0 c566462756704dc5b7d3bfe85f8a55c0 RX(theta₁₀) fbef477995a34eb392575e7336dd4ce0--c566462756704dc5b7d3bfe85f8a55c0 09cc7721e9844d95a74cfa3254e8166b c566462756704dc5b7d3bfe85f8a55c0--09cc7721e9844d95a74cfa3254e8166b 4f702c9116f34b43a769afe8f955c5f7 X 09cc7721e9844d95a74cfa3254e8166b--4f702c9116f34b43a769afe8f955c5f7 4f702c9116f34b43a769afe8f955c5f7--f358944f1ddd4f7d9f7397cdbf14e7ca 0333cdcd490e4cf3a55ff4c9c7334656 RX(theta₁₄) 4f702c9116f34b43a769afe8f955c5f7--0333cdcd490e4cf3a55ff4c9c7334656 5301090211f046569e3249afffc4d950 RY(theta₁₈) 0333cdcd490e4cf3a55ff4c9c7334656--5301090211f046569e3249afffc4d950 f94a98c74b524cf49bcbaebbafc6847c RX(theta₂₂) 5301090211f046569e3249afffc4d950--f94a98c74b524cf49bcbaebbafc6847c 296f180d7c934eee8f0c3172dcb15f5d f94a98c74b524cf49bcbaebbafc6847c--296f180d7c934eee8f0c3172dcb15f5d 0af25588b0a2432dbec9bbccd3d13250 X 296f180d7c934eee8f0c3172dcb15f5d--0af25588b0a2432dbec9bbccd3d13250 0af25588b0a2432dbec9bbccd3d13250--febae5316c164998aad442f2b86127a0 0af25588b0a2432dbec9bbccd3d13250--640a4d9fc62e4204bc3a2885c0007c7d bd3a0a072f9e45e5bb53399c4cadb363 142273fe20fb40fab34c5bb96b162410 RX(4.0*phi) b042f76fd7964fd68467860d8b365ba2--142273fe20fb40fab34c5bb96b162410 ed5bef7b746845e19e6f9dd1ea26f811 RX(theta₃) 142273fe20fb40fab34c5bb96b162410--ed5bef7b746845e19e6f9dd1ea26f811 8e7531e4bea04edc83fbc8ef7d85340e RY(theta₇) ed5bef7b746845e19e6f9dd1ea26f811--8e7531e4bea04edc83fbc8ef7d85340e fec02b7d9a45487a8fdad9ca81c479f8 RX(theta₁₁) 8e7531e4bea04edc83fbc8ef7d85340e--fec02b7d9a45487a8fdad9ca81c479f8 8758318be9224e0fb4b3a4d181c6a144 X fec02b7d9a45487a8fdad9ca81c479f8--8758318be9224e0fb4b3a4d181c6a144 8758318be9224e0fb4b3a4d181c6a144--09cc7721e9844d95a74cfa3254e8166b 1cf921d49178426fa8b4be17fc3ada2e 8758318be9224e0fb4b3a4d181c6a144--1cf921d49178426fa8b4be17fc3ada2e 9f95d4bca79f4088998d5ea8c05fae3a RX(theta₁₅) 1cf921d49178426fa8b4be17fc3ada2e--9f95d4bca79f4088998d5ea8c05fae3a 9e1a9614c3714c67933205f67fee2aaa RY(theta₁₉) 9f95d4bca79f4088998d5ea8c05fae3a--9e1a9614c3714c67933205f67fee2aaa c888d420807e421f9ef4d57b155fb53e RX(theta₂₃) 9e1a9614c3714c67933205f67fee2aaa--c888d420807e421f9ef4d57b155fb53e 1a8cf8d20136462da52668eeb36ca062 X c888d420807e421f9ef4d57b155fb53e--1a8cf8d20136462da52668eeb36ca062 1a8cf8d20136462da52668eeb36ca062--296f180d7c934eee8f0c3172dcb15f5d 4c28ba78d06640e0984abe38eb4525bc 1a8cf8d20136462da52668eeb36ca062--4c28ba78d06640e0984abe38eb4525bc 4c28ba78d06640e0984abe38eb4525bc--bd3a0a072f9e45e5bb53399c4cadb363
from qadence import QuantumModel, QuantumCircuit, total_magnetization, hea

model = QuantumModel(QuantumCircuit(3, hea(3,2)), total_magnetization(3))
%3 cluster_13ade30961e04173a6188c29bc284041 Obs. cluster_26c289494c7b4a84b2175b81634e6b93 cluster_0c5d3e268bf543da81599a43c4d0c240 HEA 1b0f4e41d47b4df29157caec70fba855 0 3a917a75b83a46528560db6505a6ee8e RX(theta₀) 1b0f4e41d47b4df29157caec70fba855--3a917a75b83a46528560db6505a6ee8e 262d1bfed566476f8bfc237021084334 1 e28c37607d684f46a6a4269452b1d5f5 RY(theta₃) 3a917a75b83a46528560db6505a6ee8e--e28c37607d684f46a6a4269452b1d5f5 547d4829789b4c6993ee58b7eb29ba77 RX(theta₆) e28c37607d684f46a6a4269452b1d5f5--547d4829789b4c6993ee58b7eb29ba77 b931e1cafd70487c95b51e9569b89c3b 547d4829789b4c6993ee58b7eb29ba77--b931e1cafd70487c95b51e9569b89c3b b0fa157e8d4249ebac76c2158892d00f b931e1cafd70487c95b51e9569b89c3b--b0fa157e8d4249ebac76c2158892d00f a522d07fdeb54ecea435e64df17637cf RX(theta₉) b0fa157e8d4249ebac76c2158892d00f--a522d07fdeb54ecea435e64df17637cf 1bc32f591e5d47d89303f2f598b9ff48 RY(theta₁₂) a522d07fdeb54ecea435e64df17637cf--1bc32f591e5d47d89303f2f598b9ff48 0c9a7c4805f14583bcc1c6386a8f5262 RX(theta₁₅) 1bc32f591e5d47d89303f2f598b9ff48--0c9a7c4805f14583bcc1c6386a8f5262 20e5050716db4bc99f38921c4f8a7b8e 0c9a7c4805f14583bcc1c6386a8f5262--20e5050716db4bc99f38921c4f8a7b8e 088bdc8fc5c54b81a70e415e104898ef 20e5050716db4bc99f38921c4f8a7b8e--088bdc8fc5c54b81a70e415e104898ef a659455add6f4e35b46f8fbb8fe432fd 088bdc8fc5c54b81a70e415e104898ef--a659455add6f4e35b46f8fbb8fe432fd f00ddb43b03e4a368a3fad12a9993f45 a659455add6f4e35b46f8fbb8fe432fd--f00ddb43b03e4a368a3fad12a9993f45 fe150f154251462eb2865a72391a4ce6 e27d6874cf704f659f65f83c155aef7b RX(theta₁) 262d1bfed566476f8bfc237021084334--e27d6874cf704f659f65f83c155aef7b d90e9d2cc7a94e0a8ecc86469a420bfa 2 60f270a1aa4344c2aa136eb9c1f850c3 RY(theta₄) e27d6874cf704f659f65f83c155aef7b--60f270a1aa4344c2aa136eb9c1f850c3 3abf9ad7f8d7482fa8625b03c4e1a90e RX(theta₇) 60f270a1aa4344c2aa136eb9c1f850c3--3abf9ad7f8d7482fa8625b03c4e1a90e 1ae10be6d1be4743917449149029c651 X 3abf9ad7f8d7482fa8625b03c4e1a90e--1ae10be6d1be4743917449149029c651 1ae10be6d1be4743917449149029c651--b931e1cafd70487c95b51e9569b89c3b 0d02a4e78ac64e47aaa0c28627e9ca16 1ae10be6d1be4743917449149029c651--0d02a4e78ac64e47aaa0c28627e9ca16 6f59c61d80834f6a98f034c6b48e6b74 RX(theta₁₀) 0d02a4e78ac64e47aaa0c28627e9ca16--6f59c61d80834f6a98f034c6b48e6b74 4ec5725163e047ada9e6d8ed9b311fa0 RY(theta₁₃) 6f59c61d80834f6a98f034c6b48e6b74--4ec5725163e047ada9e6d8ed9b311fa0 329a69de317f4f6cb7c7afe8c5338a78 RX(theta₁₆) 4ec5725163e047ada9e6d8ed9b311fa0--329a69de317f4f6cb7c7afe8c5338a78 5248fb0b434448519f5276779ac32247 X 329a69de317f4f6cb7c7afe8c5338a78--5248fb0b434448519f5276779ac32247 5248fb0b434448519f5276779ac32247--20e5050716db4bc99f38921c4f8a7b8e 6545c2df4c8a44d282233af8690cb6b4 5248fb0b434448519f5276779ac32247--6545c2df4c8a44d282233af8690cb6b4 2b8f8e9c6103439ab5e5024c98d846bc AddBlock 6545c2df4c8a44d282233af8690cb6b4--2b8f8e9c6103439ab5e5024c98d846bc 2b8f8e9c6103439ab5e5024c98d846bc--fe150f154251462eb2865a72391a4ce6 18b68e4aa1d047cba05b3d7a1e77d72c 3a598b0573794e3baad6d6cecf6c77b6 RX(theta₂) d90e9d2cc7a94e0a8ecc86469a420bfa--3a598b0573794e3baad6d6cecf6c77b6 6640ad19635e47fbaf9415b9d754e68f RY(theta₅) 3a598b0573794e3baad6d6cecf6c77b6--6640ad19635e47fbaf9415b9d754e68f e8aee3beac4441e282644ff48e9a7810 RX(theta₈) 6640ad19635e47fbaf9415b9d754e68f--e8aee3beac4441e282644ff48e9a7810 4819fa757cc04846a4138780906da281 e8aee3beac4441e282644ff48e9a7810--4819fa757cc04846a4138780906da281 c0241728b2574b02a2fb242d17968e69 X 4819fa757cc04846a4138780906da281--c0241728b2574b02a2fb242d17968e69 c0241728b2574b02a2fb242d17968e69--0d02a4e78ac64e47aaa0c28627e9ca16 5332dfd71cb34fbf852ed6f2057d7bad RX(theta₁₁) c0241728b2574b02a2fb242d17968e69--5332dfd71cb34fbf852ed6f2057d7bad 07ce2d87a8d54973a52a92a2260d787f RY(theta₁₄) 5332dfd71cb34fbf852ed6f2057d7bad--07ce2d87a8d54973a52a92a2260d787f a0a0a17467c34c92ae1b19a669f01023 RX(theta₁₇) 07ce2d87a8d54973a52a92a2260d787f--a0a0a17467c34c92ae1b19a669f01023 e42c55525abf494a813ad9ab67e61b31 a0a0a17467c34c92ae1b19a669f01023--e42c55525abf494a813ad9ab67e61b31 b869a79f470642628435d192dabb2ba5 X e42c55525abf494a813ad9ab67e61b31--b869a79f470642628435d192dabb2ba5 b869a79f470642628435d192dabb2ba5--6545c2df4c8a44d282233af8690cb6b4 b051373d2d114c18870c3580fa2e93db b869a79f470642628435d192dabb2ba5--b051373d2d114c18870c3580fa2e93db b051373d2d114c18870c3580fa2e93db--18b68e4aa1d047cba05b3d7a1e77d72c
from qadence import *

b = chain(SWAP(0,1), SWAP(0,3))
%3 321d17bd65494bf8ad3be09cc822321f 0 fb67eae9e1344f7983f202bb518e5954 321d17bd65494bf8ad3be09cc822321f--fb67eae9e1344f7983f202bb518e5954 34d42452ef69421a82f9d2b43973f80f 1 31e25502a34b4c32af4e61c773eb04e8 2ef6a11bb7a44592aa6e3a5934f4722d fb67eae9e1344f7983f202bb518e5954--2ef6a11bb7a44592aa6e3a5934f4722d 264177137fb047af8d2a594cd06665c0 31e25502a34b4c32af4e61c773eb04e8--264177137fb047af8d2a594cd06665c0 d8a8c6257b9d469e90dd3565bdcfb78f 04833b2387084b03814ecffaa4bb1174 264177137fb047af8d2a594cd06665c0--04833b2387084b03814ecffaa4bb1174 84cce315a8d94bfdb2e2b628df0c419c d8a8c6257b9d469e90dd3565bdcfb78f--84cce315a8d94bfdb2e2b628df0c419c 45d16eded7b349b08d9e0f84fab7afbe e593208da3e949b18aa74f06a27d2b85 34d42452ef69421a82f9d2b43973f80f--e593208da3e949b18aa74f06a27d2b85 37d1978bb0ed4d89909226673dd6dc46 2 e593208da3e949b18aa74f06a27d2b85--31e25502a34b4c32af4e61c773eb04e8 ef84191ca3464a96a53257569c40ab4f 2ef6a11bb7a44592aa6e3a5934f4722d--ef84191ca3464a96a53257569c40ab4f af5405c73f7f40f88b85acb52764c0a0 ef84191ca3464a96a53257569c40ab4f--af5405c73f7f40f88b85acb52764c0a0 af5405c73f7f40f88b85acb52764c0a0--45d16eded7b349b08d9e0f84fab7afbe 48f6f428448b4b14afa659bcb220111d 4deb174188444f8986711450a5c3604e 37d1978bb0ed4d89909226673dd6dc46--4deb174188444f8986711450a5c3604e a9ff6c6511fe4443bb93c5beefea3783 3 461d284db12f4870862c7cd5d827f7c3 4deb174188444f8986711450a5c3604e--461d284db12f4870862c7cd5d827f7c3 2a748c512eb44e86b64367e526d40887 461d284db12f4870862c7cd5d827f7c3--2a748c512eb44e86b64367e526d40887 8ad7611f6998457081eccfda13be221d 2a748c512eb44e86b64367e526d40887--8ad7611f6998457081eccfda13be221d 8ad7611f6998457081eccfda13be221d--48f6f428448b4b14afa659bcb220111d 912b60bdabb94b618a742ae9d76b36e2 95950b70eb404507ac7c1065756ed3c6 a9ff6c6511fe4443bb93c5beefea3783--95950b70eb404507ac7c1065756ed3c6 97fb9b90c73a4f6387908296f9bd2bc9 95950b70eb404507ac7c1065756ed3c6--97fb9b90c73a4f6387908296f9bd2bc9 ad7ff36c75bc4d958d9ebe50aeb980ca 97fb9b90c73a4f6387908296f9bd2bc9--ad7ff36c75bc4d958d9ebe50aeb980ca ad7ff36c75bc4d958d9ebe50aeb980ca--d8a8c6257b9d469e90dd3565bdcfb78f 04833b2387084b03814ecffaa4bb1174--912b60bdabb94b618a742ae9d76b36e2
from qadence import *

b = chain(CPHASE(0, 1, 0.5), CPHASE(0, 2, 0.5), CPHASE(0, 3, 0.5))
%3 64b9163cfd574a289399a0c3a1daa791 0 a4459a638ef64acabcf4ddc4b311829e 64b9163cfd574a289399a0c3a1daa791--a4459a638ef64acabcf4ddc4b311829e 53c3808a56cb47d898574c8936d4f720 1 9f694ca423e3484dbacf11e156dfd406 a4459a638ef64acabcf4ddc4b311829e--9f694ca423e3484dbacf11e156dfd406 1b98f2ab86a24f8d89a0ca5db65b94f2 9f694ca423e3484dbacf11e156dfd406--1b98f2ab86a24f8d89a0ca5db65b94f2 4e32f66892d6421ba5d8cfadfff5d4ad 1b98f2ab86a24f8d89a0ca5db65b94f2--4e32f66892d6421ba5d8cfadfff5d4ad 49eb50f1faf04acb8466e9ae0699a71f fcc968676116429e89626c80f14a16a3 PHASE(0.5) 53c3808a56cb47d898574c8936d4f720--fcc968676116429e89626c80f14a16a3 ec11ae354089446c9aef0cb774be9fc3 2 fcc968676116429e89626c80f14a16a3--a4459a638ef64acabcf4ddc4b311829e 8662a0be1b644302b643b53e22dae8a1 fcc968676116429e89626c80f14a16a3--8662a0be1b644302b643b53e22dae8a1 ab23f449e1694bd7a3dd78158f9e1129 8662a0be1b644302b643b53e22dae8a1--ab23f449e1694bd7a3dd78158f9e1129 ab23f449e1694bd7a3dd78158f9e1129--49eb50f1faf04acb8466e9ae0699a71f b3254e91693647e0a26c5888a9c8b21b c70827ef3d934983b83b85fd261d5926 ec11ae354089446c9aef0cb774be9fc3--c70827ef3d934983b83b85fd261d5926 3fbeae84e23748d2bc091c4689c08671 3 a70ecc8c0fce4c2387ada2c54fe5575f PHASE(0.5) c70827ef3d934983b83b85fd261d5926--a70ecc8c0fce4c2387ada2c54fe5575f a70ecc8c0fce4c2387ada2c54fe5575f--9f694ca423e3484dbacf11e156dfd406 9c078de096ae4f14950d50ffdd418bc3 a70ecc8c0fce4c2387ada2c54fe5575f--9c078de096ae4f14950d50ffdd418bc3 9c078de096ae4f14950d50ffdd418bc3--b3254e91693647e0a26c5888a9c8b21b b6c7cb92252d464c84625f5918705a2c 65d8d00affb44edebe3be85d22e998cd 3fbeae84e23748d2bc091c4689c08671--65d8d00affb44edebe3be85d22e998cd c35d4e58671c40e58c64ad466a2c77ef 65d8d00affb44edebe3be85d22e998cd--c35d4e58671c40e58c64ad466a2c77ef 9ee41338483d4c7fa04d707a263286cc PHASE(0.5) c35d4e58671c40e58c64ad466a2c77ef--9ee41338483d4c7fa04d707a263286cc 9ee41338483d4c7fa04d707a263286cc--1b98f2ab86a24f8d89a0ca5db65b94f2 9ee41338483d4c7fa04d707a263286cc--b6c7cb92252d464c84625f5918705a2c

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