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 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