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 94d1e6dde5db4ec7a5652aec5ba13bc9 0 c55c1722ad58452da120c3c3b22cb068 X 94d1e6dde5db4ec7a5652aec5ba13bc9--c55c1722ad58452da120c3c3b22cb068 649c7f6c004e49f8b0552124992291d3 1 26b9280de46446ba93bc5c526e716c40 c55c1722ad58452da120c3c3b22cb068--26b9280de46446ba93bc5c526e716c40 9058edf998e24a7e92b5cc880bfe949b 426441cb1f0c4e15add0d8c759edb196 Y 649c7f6c004e49f8b0552124992291d3--426441cb1f0c4e15add0d8c759edb196 426441cb1f0c4e15add0d8c759edb196--9058edf998e24a7e92b5cc880bfe949b
from qadence import X, Y, chain
from qadence.draw import display

b = chain(X(0), Y(0))
%3 83c3f59bff174fe79ef4a68e0f2c022c 0 5e1cf48fddc640a48ff79531ed8d284d X 83c3f59bff174fe79ef4a68e0f2c022c--5e1cf48fddc640a48ff79531ed8d284d 6dd5102d9888400d9228081d5fa437cc Y 5e1cf48fddc640a48ff79531ed8d284d--6dd5102d9888400d9228081d5fa437cc 271794aff177425eb3960866c48befcd 6dd5102d9888400d9228081d5fa437cc--271794aff177425eb3960866c48befcd
from qadence import X, Y, chain
from qadence.draw import display

b = chain(X(0), Y(1))
%3 c9ecab5a0d544c16ade233ab271cae8d 0 43fcaa9f229543dfbb01b3c13d426903 X c9ecab5a0d544c16ade233ab271cae8d--43fcaa9f229543dfbb01b3c13d426903 2128a02e57ed49978002e81c9ac7f188 1 7150a76fce0848b3b7913c909240858e 43fcaa9f229543dfbb01b3c13d426903--7150a76fce0848b3b7913c909240858e 7d2b5706dd9a4ee3b9c912b4de682e1d 7150a76fce0848b3b7913c909240858e--7d2b5706dd9a4ee3b9c912b4de682e1d a32d1da3ccdf49c09e6ec9799980d888 0ccc35a048fe44db8953f03223ecc168 2128a02e57ed49978002e81c9ac7f188--0ccc35a048fe44db8953f03223ecc168 37c8bdc3de2241bbb6027d38d35bf71f Y 0ccc35a048fe44db8953f03223ecc168--37c8bdc3de2241bbb6027d38d35bf71f 37c8bdc3de2241bbb6027d38d35bf71f--a32d1da3ccdf49c09e6ec9799980d888
from qadence import X, Y, add
from qadence.draw import display

b = add(X(0), Y(1), X(2))
%3 cluster_ae328d649eeb4316b59bb510c93dc7dd 4749dbedc19c41cca6fa337a29a4f43b 0 ffef37066a5e4db2925db17e97db7f3c 4749dbedc19c41cca6fa337a29a4f43b--ffef37066a5e4db2925db17e97db7f3c c502d31a787c43e394c726792510d08a 1 62d36f91f1404a89aa4cdc9e4315bc7b ffef37066a5e4db2925db17e97db7f3c--62d36f91f1404a89aa4cdc9e4315bc7b a72b03fdd5be4443b623bdf54f3b40ef 27805257c77c46d197863a90c331a7b7 AddBlock c502d31a787c43e394c726792510d08a--27805257c77c46d197863a90c331a7b7 2047d6f6a96d44c29ce2190bc074071d 2 27805257c77c46d197863a90c331a7b7--a72b03fdd5be4443b623bdf54f3b40ef 5829ac15067e4299b51f7eea185c3ed9 c1da03f3eee94069a8fba413a75dc965 2047d6f6a96d44c29ce2190bc074071d--c1da03f3eee94069a8fba413a75dc965 c1da03f3eee94069a8fba413a75dc965--5829ac15067e4299b51f7eea185c3ed9
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_9362c056b4014cbd8e9fd394994f8502 cluster_51a6f2744c1d4fcd862523599eecbbf8 rx 98bd1bd8174b4a888b12276eb88d26ec 0 0c5c0fa626064e6f99f80936f4615be1 X 98bd1bd8174b4a888b12276eb88d26ec--0c5c0fa626064e6f99f80936f4615be1 677028167f2e4199a8d732fe01529f2e 1 0a51b4a76b984c13977f3f2a7f671835 0c5c0fa626064e6f99f80936f4615be1--0a51b4a76b984c13977f3f2a7f671835 94abf3c298754f3491f769a1c410362b 0a51b4a76b984c13977f3f2a7f671835--94abf3c298754f3491f769a1c410362b d3b6cb8698104eb683ed6defc0939d41 94abf3c298754f3491f769a1c410362b--d3b6cb8698104eb683ed6defc0939d41 11b5714f7d13477bb6287204ad88f63f 34899f50247a4fb49c07200d2da79225 Y 677028167f2e4199a8d732fe01529f2e--34899f50247a4fb49c07200d2da79225 39a16e9d020547c4bc0f8243c379893f 2 6339a3f3898b4db0be82b5c34986ef4a 34899f50247a4fb49c07200d2da79225--6339a3f3898b4db0be82b5c34986ef4a 245749af5aeb4fbe85ece178939476be HamEvo 6339a3f3898b4db0be82b5c34986ef4a--245749af5aeb4fbe85ece178939476be 245749af5aeb4fbe85ece178939476be--11b5714f7d13477bb6287204ad88f63f 9b66cf3dd56f48749431ba2b5028f062 7bf41a2c19ee48698f98adb7e5aee32e RX(x) 39a16e9d020547c4bc0f8243c379893f--7bf41a2c19ee48698f98adb7e5aee32e 33573db401eb417cb65ae0ec2574b46f 3 c157e33c15374303a5b754b9b3d227b4 7bf41a2c19ee48698f98adb7e5aee32e--c157e33c15374303a5b754b9b3d227b4 047f27534b124ac7a9f64eb584c7280a t = 10 c157e33c15374303a5b754b9b3d227b4--047f27534b124ac7a9f64eb584c7280a 047f27534b124ac7a9f64eb584c7280a--9b66cf3dd56f48749431ba2b5028f062 2198fb4747ed49e98ef263fbdd3a47ed a294d2814ac94320b2e960fe113736af RX(0.5) 33573db401eb417cb65ae0ec2574b46f--a294d2814ac94320b2e960fe113736af bb84cb25e9414705b6fbe0c6a3e13d01 X a294d2814ac94320b2e960fe113736af--bb84cb25e9414705b6fbe0c6a3e13d01 bb84cb25e9414705b6fbe0c6a3e13d01--c157e33c15374303a5b754b9b3d227b4 6261e94ea4d24290bbde44733c8fcdd4 bb84cb25e9414705b6fbe0c6a3e13d01--6261e94ea4d24290bbde44733c8fcdd4 6261e94ea4d24290bbde44733c8fcdd4--2198fb4747ed49e98ef263fbdd3a47ed
from qadence import feature_map, hea, chain

block = chain(feature_map(4, reupload_scaling="Tower"), hea(4,2))
%3 cluster_618914e1520a44319ef7b58fab41c088 HEA cluster_ebef9227fa4b4a02924f597411b7abda Tower Fourier FM e04ce146428e4645914048de25bb33bb 0 be7778a08f6e407c8c2ba8576b97f50f RX(1.0*phi) e04ce146428e4645914048de25bb33bb--be7778a08f6e407c8c2ba8576b97f50f 4cfd34ea3f5744a3b3a998ff7a43273d 1 615b61d8a60b4271a4693b56325647ee RX(theta₀) be7778a08f6e407c8c2ba8576b97f50f--615b61d8a60b4271a4693b56325647ee 4e4eff2d092c4fc1a85213038cd75e3c RY(theta₄) 615b61d8a60b4271a4693b56325647ee--4e4eff2d092c4fc1a85213038cd75e3c 818dc651bd2348a4ad569379f8dc8cab RX(theta₈) 4e4eff2d092c4fc1a85213038cd75e3c--818dc651bd2348a4ad569379f8dc8cab 4b216751b7404a1a8e409d9dead918e0 818dc651bd2348a4ad569379f8dc8cab--4b216751b7404a1a8e409d9dead918e0 9c7c0b6a8ef247dd9b22dbd70f66507f 4b216751b7404a1a8e409d9dead918e0--9c7c0b6a8ef247dd9b22dbd70f66507f 7928ebf5cc2242c9a6b2e5db90775902 RX(theta₁₂) 9c7c0b6a8ef247dd9b22dbd70f66507f--7928ebf5cc2242c9a6b2e5db90775902 e9293cf635e14ab59115ad6f28c3b464 RY(theta₁₆) 7928ebf5cc2242c9a6b2e5db90775902--e9293cf635e14ab59115ad6f28c3b464 c49aa43b56b544e4be5961c02053bd54 RX(theta₂₀) e9293cf635e14ab59115ad6f28c3b464--c49aa43b56b544e4be5961c02053bd54 4d08b091715241a098445bc25912ff4a c49aa43b56b544e4be5961c02053bd54--4d08b091715241a098445bc25912ff4a ad0ec8a16f0c42fa8badccd9b60fdfb3 4d08b091715241a098445bc25912ff4a--ad0ec8a16f0c42fa8badccd9b60fdfb3 d1e93e2e15cb44678de9038e0e3b008c ad0ec8a16f0c42fa8badccd9b60fdfb3--d1e93e2e15cb44678de9038e0e3b008c 6fefe4ae414e446495017ab8273be9b5 12c4e95bc31e4a9cbf0c27d656926e8f RX(2.0*phi) 4cfd34ea3f5744a3b3a998ff7a43273d--12c4e95bc31e4a9cbf0c27d656926e8f 885414ef091f422aa93ad7fc2153874c 2 ef0a7daf2d79421c8508599429e1c97a RX(theta₁) 12c4e95bc31e4a9cbf0c27d656926e8f--ef0a7daf2d79421c8508599429e1c97a cba8e44432b54073a93534a5a0746bf0 RY(theta₅) ef0a7daf2d79421c8508599429e1c97a--cba8e44432b54073a93534a5a0746bf0 54f1d2c18e1b4b1db2f8edcff1f77ce1 RX(theta₉) cba8e44432b54073a93534a5a0746bf0--54f1d2c18e1b4b1db2f8edcff1f77ce1 f7085fb934764e47b8d59838ce71323a X 54f1d2c18e1b4b1db2f8edcff1f77ce1--f7085fb934764e47b8d59838ce71323a f7085fb934764e47b8d59838ce71323a--4b216751b7404a1a8e409d9dead918e0 5abba2e317d74729a184bf5e96e3574e f7085fb934764e47b8d59838ce71323a--5abba2e317d74729a184bf5e96e3574e 0d87102c62294f34a66cd813b5200c1e RX(theta₁₃) 5abba2e317d74729a184bf5e96e3574e--0d87102c62294f34a66cd813b5200c1e 6912bd287bad43a9ad0f928e2f926036 RY(theta₁₇) 0d87102c62294f34a66cd813b5200c1e--6912bd287bad43a9ad0f928e2f926036 13941293bf8149d7b04513755b54a5d2 RX(theta₂₁) 6912bd287bad43a9ad0f928e2f926036--13941293bf8149d7b04513755b54a5d2 d5bbc31dca6142e69a4ed476f998e0b1 X 13941293bf8149d7b04513755b54a5d2--d5bbc31dca6142e69a4ed476f998e0b1 d5bbc31dca6142e69a4ed476f998e0b1--4d08b091715241a098445bc25912ff4a 7fbed4c072bf43a290b431c59741fdcb d5bbc31dca6142e69a4ed476f998e0b1--7fbed4c072bf43a290b431c59741fdcb 7fbed4c072bf43a290b431c59741fdcb--6fefe4ae414e446495017ab8273be9b5 79ee1be32f1642e699cddccf8feb99a1 536b7f98fb824c86b677695ec9c0be5b RX(3.0*phi) 885414ef091f422aa93ad7fc2153874c--536b7f98fb824c86b677695ec9c0be5b 5ae8a33e815c4720a821ca200684bfc9 3 f187477175b6411c86c64f2a3d0ab11b RX(theta₂) 536b7f98fb824c86b677695ec9c0be5b--f187477175b6411c86c64f2a3d0ab11b adcd36fd2a5c4f0dac1e96a48ec9c092 RY(theta₆) f187477175b6411c86c64f2a3d0ab11b--adcd36fd2a5c4f0dac1e96a48ec9c092 f87815f90f244b2b872b2318d78c199f RX(theta₁₀) adcd36fd2a5c4f0dac1e96a48ec9c092--f87815f90f244b2b872b2318d78c199f 22a686ff84df4282a0274fb3fa1cc243 f87815f90f244b2b872b2318d78c199f--22a686ff84df4282a0274fb3fa1cc243 bd7ed433fac946ecaf3149b6b7fb1621 X 22a686ff84df4282a0274fb3fa1cc243--bd7ed433fac946ecaf3149b6b7fb1621 bd7ed433fac946ecaf3149b6b7fb1621--5abba2e317d74729a184bf5e96e3574e be9def21474a470199985291108addec RX(theta₁₄) bd7ed433fac946ecaf3149b6b7fb1621--be9def21474a470199985291108addec 829edaee95974368a530f0fda64daed8 RY(theta₁₈) be9def21474a470199985291108addec--829edaee95974368a530f0fda64daed8 04da9bd990fa4ce5aa5474915f21069d RX(theta₂₂) 829edaee95974368a530f0fda64daed8--04da9bd990fa4ce5aa5474915f21069d 38eaa6a34a2044878e7cad0647b7576d 04da9bd990fa4ce5aa5474915f21069d--38eaa6a34a2044878e7cad0647b7576d 50e7ebfd588341c793df9ec809b06d86 X 38eaa6a34a2044878e7cad0647b7576d--50e7ebfd588341c793df9ec809b06d86 50e7ebfd588341c793df9ec809b06d86--7fbed4c072bf43a290b431c59741fdcb 50e7ebfd588341c793df9ec809b06d86--79ee1be32f1642e699cddccf8feb99a1 7d4fdd8a7c034eeab58aa83da555ff32 765feb6423534fd0b12550b80e49ef8c RX(4.0*phi) 5ae8a33e815c4720a821ca200684bfc9--765feb6423534fd0b12550b80e49ef8c bae5bf8b194242a3894ab73c35189418 RX(theta₃) 765feb6423534fd0b12550b80e49ef8c--bae5bf8b194242a3894ab73c35189418 16a9eeb2608b4775b9cb2979efa7f006 RY(theta₇) bae5bf8b194242a3894ab73c35189418--16a9eeb2608b4775b9cb2979efa7f006 1d26d233022640e7b6a8986d5a126d41 RX(theta₁₁) 16a9eeb2608b4775b9cb2979efa7f006--1d26d233022640e7b6a8986d5a126d41 a7490c2056904f10a46f9029749a975a X 1d26d233022640e7b6a8986d5a126d41--a7490c2056904f10a46f9029749a975a a7490c2056904f10a46f9029749a975a--22a686ff84df4282a0274fb3fa1cc243 3919e4555799430493b796d068e32306 a7490c2056904f10a46f9029749a975a--3919e4555799430493b796d068e32306 05ae889621604e479e7204f1f3862e44 RX(theta₁₅) 3919e4555799430493b796d068e32306--05ae889621604e479e7204f1f3862e44 7ae60ac647d84f0d8cdb48c1ff79ae46 RY(theta₁₉) 05ae889621604e479e7204f1f3862e44--7ae60ac647d84f0d8cdb48c1ff79ae46 faa6d157181b4bd79585b69d26d933e1 RX(theta₂₃) 7ae60ac647d84f0d8cdb48c1ff79ae46--faa6d157181b4bd79585b69d26d933e1 7b09fb7ff32044599b0a22b743858ef5 X faa6d157181b4bd79585b69d26d933e1--7b09fb7ff32044599b0a22b743858ef5 7b09fb7ff32044599b0a22b743858ef5--38eaa6a34a2044878e7cad0647b7576d d4f2ed880df541a9a6758f137560c42f 7b09fb7ff32044599b0a22b743858ef5--d4f2ed880df541a9a6758f137560c42f d4f2ed880df541a9a6758f137560c42f--7d4fdd8a7c034eeab58aa83da555ff32
from qadence import QuantumModel, QuantumCircuit, total_magnetization, hea

model = QuantumModel(QuantumCircuit(3, hea(3,2)), total_magnetization(3))
%3 cluster_1891e151d1044f36ba97129a2ae870aa Obs. cluster_43c44927462a457da15a954c28f7b3ba cluster_f48d65f6d48b4f12946e2fe335e2f3f5 HEA 3d7bb539243b4f9793a987140e756416 0 7af68fd55b4e4beba3e6145bfbf0da74 RX(theta₀) 3d7bb539243b4f9793a987140e756416--7af68fd55b4e4beba3e6145bfbf0da74 e43051ccd7e64af28e0d654c2ebed0db 1 de4ad9df3aee4f52a3c0bd4ea1c13028 RY(theta₃) 7af68fd55b4e4beba3e6145bfbf0da74--de4ad9df3aee4f52a3c0bd4ea1c13028 1633de6464a740f2ab14b0b3a13196bf RX(theta₆) de4ad9df3aee4f52a3c0bd4ea1c13028--1633de6464a740f2ab14b0b3a13196bf 120eb5e4e5504a03b50f6819435878fd 1633de6464a740f2ab14b0b3a13196bf--120eb5e4e5504a03b50f6819435878fd 5ce147bf564d4dcfaad6c88049ae1d0f 120eb5e4e5504a03b50f6819435878fd--5ce147bf564d4dcfaad6c88049ae1d0f 0aa4d7cbc94e48f68800242a938a33a8 RX(theta₉) 5ce147bf564d4dcfaad6c88049ae1d0f--0aa4d7cbc94e48f68800242a938a33a8 06d68c853f0d4f9d91133bf1a061689c RY(theta₁₂) 0aa4d7cbc94e48f68800242a938a33a8--06d68c853f0d4f9d91133bf1a061689c e8345146055a46e08fde4f263f8d1ec7 RX(theta₁₅) 06d68c853f0d4f9d91133bf1a061689c--e8345146055a46e08fde4f263f8d1ec7 27e9a484502a4c9e95f0d7a11e9c33a1 e8345146055a46e08fde4f263f8d1ec7--27e9a484502a4c9e95f0d7a11e9c33a1 2b246ba8f7d940e989fc2532efd64364 27e9a484502a4c9e95f0d7a11e9c33a1--2b246ba8f7d940e989fc2532efd64364 f6998ccbd5f141a497aa2d914ffbb72c 2b246ba8f7d940e989fc2532efd64364--f6998ccbd5f141a497aa2d914ffbb72c 565ed657b5644a65abef7b5bcc7c0db9 f6998ccbd5f141a497aa2d914ffbb72c--565ed657b5644a65abef7b5bcc7c0db9 e715b2b945294eac8f784fbde03b905c 189093fb189043528c515b94b433c91e RX(theta₁) e43051ccd7e64af28e0d654c2ebed0db--189093fb189043528c515b94b433c91e fb92390df72a4ff78b2c9e7c128a2e62 2 a7744ca14f6943ab9597162cf20873e7 RY(theta₄) 189093fb189043528c515b94b433c91e--a7744ca14f6943ab9597162cf20873e7 1963cc76be3a4d3f9d5cb4de1c9a0de1 RX(theta₇) a7744ca14f6943ab9597162cf20873e7--1963cc76be3a4d3f9d5cb4de1c9a0de1 c0b1cac004da424aa6fca6fc4c7bdf2f X 1963cc76be3a4d3f9d5cb4de1c9a0de1--c0b1cac004da424aa6fca6fc4c7bdf2f c0b1cac004da424aa6fca6fc4c7bdf2f--120eb5e4e5504a03b50f6819435878fd 4632a9ff11254737aecfcd8101f63098 c0b1cac004da424aa6fca6fc4c7bdf2f--4632a9ff11254737aecfcd8101f63098 2d497955cb564b3ea5a0820129365728 RX(theta₁₀) 4632a9ff11254737aecfcd8101f63098--2d497955cb564b3ea5a0820129365728 e470426448704d39b5880c584fa2bbc1 RY(theta₁₃) 2d497955cb564b3ea5a0820129365728--e470426448704d39b5880c584fa2bbc1 d223f9e811a6484ca5736c48ad168f50 RX(theta₁₆) e470426448704d39b5880c584fa2bbc1--d223f9e811a6484ca5736c48ad168f50 a211f07a7bee405bb849097859061411 X d223f9e811a6484ca5736c48ad168f50--a211f07a7bee405bb849097859061411 a211f07a7bee405bb849097859061411--27e9a484502a4c9e95f0d7a11e9c33a1 769e6ab56f8b423d80fc71cb57b4314d a211f07a7bee405bb849097859061411--769e6ab56f8b423d80fc71cb57b4314d 4bec3b32d92241e481e71ed8befafb11 AddBlock 769e6ab56f8b423d80fc71cb57b4314d--4bec3b32d92241e481e71ed8befafb11 4bec3b32d92241e481e71ed8befafb11--e715b2b945294eac8f784fbde03b905c fde4dd7471724987b674eb5773acac52 0af340c31ce74672bdd33107af0b6af7 RX(theta₂) fb92390df72a4ff78b2c9e7c128a2e62--0af340c31ce74672bdd33107af0b6af7 ea1000ea0c984a6fa696c37c0dbb7760 RY(theta₅) 0af340c31ce74672bdd33107af0b6af7--ea1000ea0c984a6fa696c37c0dbb7760 24056d3e7884477bb2f4c5da2cc32ecd RX(theta₈) ea1000ea0c984a6fa696c37c0dbb7760--24056d3e7884477bb2f4c5da2cc32ecd 92780faf731c4c6c8b303f9831563066 24056d3e7884477bb2f4c5da2cc32ecd--92780faf731c4c6c8b303f9831563066 21498170a11348d1bfe5e0e297820b23 X 92780faf731c4c6c8b303f9831563066--21498170a11348d1bfe5e0e297820b23 21498170a11348d1bfe5e0e297820b23--4632a9ff11254737aecfcd8101f63098 20edb74bb9884ff196ef9de4dcd082fb RX(theta₁₁) 21498170a11348d1bfe5e0e297820b23--20edb74bb9884ff196ef9de4dcd082fb b09c85f23800414fb99f06b1a85db8cf RY(theta₁₄) 20edb74bb9884ff196ef9de4dcd082fb--b09c85f23800414fb99f06b1a85db8cf 183e5a3f059a4eb081af5da61796d595 RX(theta₁₇) b09c85f23800414fb99f06b1a85db8cf--183e5a3f059a4eb081af5da61796d595 1b2456031af94384a8ced70010f03d27 183e5a3f059a4eb081af5da61796d595--1b2456031af94384a8ced70010f03d27 2200f0be09f9421eb248c4f59046c415 X 1b2456031af94384a8ced70010f03d27--2200f0be09f9421eb248c4f59046c415 2200f0be09f9421eb248c4f59046c415--769e6ab56f8b423d80fc71cb57b4314d 50bad808b260481a9055a3b0b6cbbac3 2200f0be09f9421eb248c4f59046c415--50bad808b260481a9055a3b0b6cbbac3 50bad808b260481a9055a3b0b6cbbac3--fde4dd7471724987b674eb5773acac52
from qadence import *

b = chain(SWAP(0,1), SWAP(0,3))
%3 42dbcf3ba0ba4ce4893fd78cf6902408 0 6d818a5a8e624fb6b495c48a932a3118 42dbcf3ba0ba4ce4893fd78cf6902408--6d818a5a8e624fb6b495c48a932a3118 9399f2a6c6af48f9822d097a02d4165f 1 1b580f8f50ac448190d3511ea841286c 37b7d77e31be47209c29c997c4a099b7 6d818a5a8e624fb6b495c48a932a3118--37b7d77e31be47209c29c997c4a099b7 815a246e225d4274a492fafae51730b5 1b580f8f50ac448190d3511ea841286c--815a246e225d4274a492fafae51730b5 a46d45f8544e4c8f8264d805c203aaba aa42683d6ecf41d3b1f9ad7b5663ba02 815a246e225d4274a492fafae51730b5--aa42683d6ecf41d3b1f9ad7b5663ba02 d933d3e45ce74df0b670da226a056c6a a46d45f8544e4c8f8264d805c203aaba--d933d3e45ce74df0b670da226a056c6a 4f373a7bee3b4691b979b070cdf03d83 b28a44de2ee8403dbe42998ba554140e 9399f2a6c6af48f9822d097a02d4165f--b28a44de2ee8403dbe42998ba554140e 7388c2f6e3614d87bd8104655a7918a6 2 b28a44de2ee8403dbe42998ba554140e--1b580f8f50ac448190d3511ea841286c 2c29af51ea17458396dc4d73dfdb3063 37b7d77e31be47209c29c997c4a099b7--2c29af51ea17458396dc4d73dfdb3063 61e3c41200224264ba25bf07ebb1b444 2c29af51ea17458396dc4d73dfdb3063--61e3c41200224264ba25bf07ebb1b444 61e3c41200224264ba25bf07ebb1b444--4f373a7bee3b4691b979b070cdf03d83 e931c9f52b5e4b34bfc1806f2236afef ff32494173ac4765a95581a3f9f2208a 7388c2f6e3614d87bd8104655a7918a6--ff32494173ac4765a95581a3f9f2208a 6244c6527f964c12b1e14f2ca64f81ed 3 e3024ad347d74e0d917f63fd209c1307 ff32494173ac4765a95581a3f9f2208a--e3024ad347d74e0d917f63fd209c1307 3155d6b44e5f42a39abc7cafc9142961 e3024ad347d74e0d917f63fd209c1307--3155d6b44e5f42a39abc7cafc9142961 b368922660804777ae4d1e53bed80d2e 3155d6b44e5f42a39abc7cafc9142961--b368922660804777ae4d1e53bed80d2e b368922660804777ae4d1e53bed80d2e--e931c9f52b5e4b34bfc1806f2236afef d82a159153a0489ba323d2408eeae30b 035d610607ca477cbd27b960523428fb 6244c6527f964c12b1e14f2ca64f81ed--035d610607ca477cbd27b960523428fb 1cb1dc27195e461cbcdcb457b61332da 035d610607ca477cbd27b960523428fb--1cb1dc27195e461cbcdcb457b61332da a477ec85e7c94aa2a6361a01697b8db4 1cb1dc27195e461cbcdcb457b61332da--a477ec85e7c94aa2a6361a01697b8db4 a477ec85e7c94aa2a6361a01697b8db4--a46d45f8544e4c8f8264d805c203aaba aa42683d6ecf41d3b1f9ad7b5663ba02--d82a159153a0489ba323d2408eeae30b
from qadence import *

b = chain(CPHASE(0, 1, 0.5), CPHASE(0, 2, 0.5), CPHASE(0, 3, 0.5))
%3 23778a2822d545bca34eb51c429330d3 0 2aa2610f06534dcbaa458222d86b99ea 23778a2822d545bca34eb51c429330d3--2aa2610f06534dcbaa458222d86b99ea d338d8e82df7433698bb1a90bc9d1566 1 292d77626e494d15b60bc9765928bea2 2aa2610f06534dcbaa458222d86b99ea--292d77626e494d15b60bc9765928bea2 79c36f1c63794752a7146eeeda758715 292d77626e494d15b60bc9765928bea2--79c36f1c63794752a7146eeeda758715 458dd2e5e930424c9a875fbee9026272 79c36f1c63794752a7146eeeda758715--458dd2e5e930424c9a875fbee9026272 edb98e4526fd4246bf95ffdc9f464f5f 98e5bc3abcb640ee9c748c15a13733f3 PHASE(0.5) d338d8e82df7433698bb1a90bc9d1566--98e5bc3abcb640ee9c748c15a13733f3 f613bcb1454e4d268fcf44aac630f15b 2 98e5bc3abcb640ee9c748c15a13733f3--2aa2610f06534dcbaa458222d86b99ea 331db8cf9de2432a9d42c52f2832cebb 98e5bc3abcb640ee9c748c15a13733f3--331db8cf9de2432a9d42c52f2832cebb dab64cffe67c476a9de5b78309aebdd6 331db8cf9de2432a9d42c52f2832cebb--dab64cffe67c476a9de5b78309aebdd6 dab64cffe67c476a9de5b78309aebdd6--edb98e4526fd4246bf95ffdc9f464f5f c42af38552a349dba0268789e2832ca2 b3eb9346baf442cfa3ca2a97e2e08a48 f613bcb1454e4d268fcf44aac630f15b--b3eb9346baf442cfa3ca2a97e2e08a48 f077363ace954b1bb6ec1dde4589f7e6 3 cc96f6afebf24734b7d24d09548241e9 PHASE(0.5) b3eb9346baf442cfa3ca2a97e2e08a48--cc96f6afebf24734b7d24d09548241e9 cc96f6afebf24734b7d24d09548241e9--292d77626e494d15b60bc9765928bea2 ad3c04d7862d44e585f9c8c3fbd44c5c cc96f6afebf24734b7d24d09548241e9--ad3c04d7862d44e585f9c8c3fbd44c5c ad3c04d7862d44e585f9c8c3fbd44c5c--c42af38552a349dba0268789e2832ca2 fb65765df65249368e942ff8ece989c0 a8d3545b6749417e9ace4b3578d4f171 f077363ace954b1bb6ec1dde4589f7e6--a8d3545b6749417e9ace4b3578d4f171 e8880c639764459ca26761b8ac99c20e a8d3545b6749417e9ace4b3578d4f171--e8880c639764459ca26761b8ac99c20e e03764d1a6fe4d0a98f99a847bbd7b7f PHASE(0.5) e8880c639764459ca26761b8ac99c20e--e03764d1a6fe4d0a98f99a847bbd7b7f e03764d1a6fe4d0a98f99a847bbd7b7f--79c36f1c63794752a7146eeeda758715 e03764d1a6fe4d0a98f99a847bbd7b7f--fb65765df65249368e942ff8ece989c0

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