6
$\begingroup$

Say I have a string representing the operations of a quantum circuit. I want to have the unitary operator representing it. Is there a tool for doing so in Python or else?

$\endgroup$
4
$\begingroup$

You can use Python with Qiskit. Say your string representation is written using OpenQASM syntax.

qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
h q[0];
t q[1];
cx q[0], q[1];
"""

You can build a circuit out of this and simulate it on a unitary simulator:

import qiskit as qk
import numpy as np
circuit = qk.load_qasm_string(qasm)
result = qk.execute(circuit, 'local_unitary_simulator').result()
print(np.round(result.get_unitary(), 1))

Yields:

[[ 0.7+0.j   0.7-0.j   0. +0.j   0. +0.j ]
[ 0. +0.j   0. +0.j   0.5+0.5j -0.5-0.5j]
[ 0. +0.j   0. +0.j   0.5+0.5j  0.5+0.5j]
[ 0.7+0.j  -0.7+0.j   0. +0.j   0. +0.j ]]
$\endgroup$
1
$\begingroup$

Normally, quantum simulators ask you to specify a starting state, for example, all qubits initially in state $|0\rangle$, and then they give you the final state after that initial state evolves through all of the SEO (sequence of elementary operations). This is performed in my software Qubiter by the class SEO_simulator.

However, a well designed simulator package should also multiply the SEO and give you the unitary matrix it represents. This is done in Qubiter by the class SEO_MatrixProduct.

I have described the features of Qubiter in some of my other answers; it is my own code.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.