common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

JSONizing Quantum Circuits for Quantum Computers with blueqat0.4.6

Yuichiro Minato

2021/08/06 14:00

JSONizing Quantum Circuits for Quantum Computers

Recently, I've had more and more opportunities to use quantum circuits in web UI. It seems that the new version 0.4.6 of blueqat has added the ability to convert quantum circuits into JSON, so I'd like to take a look.

First of all, let's make a normal circuit, let's say GHZ.

from blueqat import Circuit

a = Circuit().h[0].cx[0,1].cx[1,2]
a.m[:].run(shots=100)
Counter({'000': 47, '111': 53})

This is how we got the answers 000 and 111. Let's convert this directly into JSON.

from blueqat.circuit_funcs import json_serializer

json_serializer.serialize(a)
{'schema': {'name': 'blueqat-circuit', 'version': '1'},
 'n_qubits': 3,
 'ops': [{'name': 'h', 'params': [], 'targets': [0]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'measure', 'params': [], 'targets': [0]},
  {'name': 'measure', 'params': [], 'targets': [1]},
  {'name': 'measure', 'params': [], 'targets': [2]}]}

It looks good. I'll try QAOA next.

from blueqat import vqe
from blueqat.pauli import qubo_bit as q

hamiltonian = -3*q(0)-3*q(1)-3*q(2)-3*q(3)-3*q(4)+2*q(0)*q(1)+2*q(0)*q(2)+2*q(0)*q(3)+2*q(0)*q(4)+2*q(1)*q(2)+2*q(1)*q(3)+2*q(1)*q(4)+2*q(2)*q(3)+2*q(2)*q(4)+2*q(3)*q(4)
step = 2

result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, step)).run()
print(result.most_common(12))
(((0, 0, 0, 0, 0), 0.08285479666861541), ((0, 1, 0, 1, 0), 0.07087886886976061), ((1, 0, 0, 0, 1), 0.07087886886976061), ((0, 1, 0, 0, 1), 0.07087886886976061), ((0, 0, 1, 1, 0), 0.0708788688697606), ((1, 1, 0, 0, 0), 0.07087886886976058), ((0, 1, 1, 0, 0), 0.07087886886976058), ((1, 0, 1, 0, 0), 0.07087886886976057), ((0, 0, 1, 0, 1), 0.07087886886976055), ((1, 0, 0, 1, 0), 0.07087886886976053), ((0, 0, 0, 1, 1), 0.07087886886976053), ((1, 1, 1, 1, 1), 0.029673060877846758))

JSONize the quantum circuit of QAOA

Next, let's make the circuit of QAOA into JSON as well.

json_serializer.serialize(result.circuit)
{'schema': {'name': 'blueqat-circuit', 'version': '1'},
 'n_qubits': 5,
 'ops': [{'name': 'h', 'params': [], 'targets': [0]},
  {'name': 'h', 'params': [], 'targets': [1]},
  {'name': 'h', 'params': [], 'targets': [2]},
  {'name': 'h', 'params': [], 'targets': [3]},
  {'name': 'h', 'params': [], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [1]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'cx', 'params': [], 'targets': [0, 3]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [0, 3]},
  {'name': 'cx', 'params': [], 'targets': [0, 4]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [0, 4]},
  {'name': 'rz', 'params': [15.89041983321199], 'targets': [0]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'cx', 'params': [], 'targets': [1, 3]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [1, 3]},
  {'name': 'cx', 'params': [], 'targets': [1, 4]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [1, 4]},
  {'name': 'rz', 'params': [15.89041983321199], 'targets': [1]},
  {'name': 'cx', 'params': [], 'targets': [2, 3]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [2, 3]},
  {'name': 'cx', 'params': [], 'targets': [2, 4]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [2, 4]},
  {'name': 'rz', 'params': [15.89041983321199], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [3, 4]},
  {'name': 'rz', 'params': [-15.89041983321199], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [3, 4]},
  {'name': 'rz', 'params': [15.89041983321199], 'targets': [3]},
  {'name': 'rz', 'params': [15.89041983321199], 'targets': [4]},
  {'name': 'rx', 'params': [5.011955775269625], 'targets': [0]},
  {'name': 'rx', 'params': [5.011955775269625], 'targets': [1]},
  {'name': 'rx', 'params': [5.011955775269625], 'targets': [2]},
  {'name': 'rx', 'params': [5.011955775269625], 'targets': [3]},
  {'name': 'rx', 'params': [5.011955775269625], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [1]},
  {'name': 'cx', 'params': [], 'targets': [0, 1]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [0, 2]},
  {'name': 'cx', 'params': [], 'targets': [0, 3]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [0, 3]},
  {'name': 'cx', 'params': [], 'targets': [0, 4]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [0, 4]},
  {'name': 'rz', 'params': [17.04304145585135], 'targets': [0]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [1, 2]},
  {'name': 'cx', 'params': [], 'targets': [1, 3]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [1, 3]},
  {'name': 'cx', 'params': [], 'targets': [1, 4]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [1, 4]},
  {'name': 'rz', 'params': [17.04304145585135], 'targets': [1]},
  {'name': 'cx', 'params': [], 'targets': [2, 3]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [3]},
  {'name': 'cx', 'params': [], 'targets': [2, 3]},
  {'name': 'cx', 'params': [], 'targets': [2, 4]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [2, 4]},
  {'name': 'rz', 'params': [17.04304145585135], 'targets': [2]},
  {'name': 'cx', 'params': [], 'targets': [3, 4]},
  {'name': 'rz', 'params': [-17.04304145585135], 'targets': [4]},
  {'name': 'cx', 'params': [], 'targets': [3, 4]},
  {'name': 'rz', 'params': [17.04304145585135], 'targets': [3]},
  {'name': 'rz', 'params': [17.04304145585135], 'targets': [4]},
  {'name': 'rx', 'params': [0.2557628957745187], 'targets': [0]},
  {'name': 'rx', 'params': [0.2557628957745187], 'targets': [1]},
  {'name': 'rx', 'params': [0.2557628957745187], 'targets': [2]},
  {'name': 'rx', 'params': [0.2557628957745187], 'targets': [3]},
  {'name': 'rx', 'params': [0.2557628957745187], 'targets': [4]}]}

In this way, a variational quantum circuit with parameters could be JSONized.

© 2025, blueqat Inc. All rights reserved