Skip to content

Interop

QuantSDK circuits can be seamlessly converted to and from other quantum frameworks — enabling you to leverage existing tooling while staying framework-agnostic.

Supported Frameworks

Framework Import Export Status
Qiskit Available
OpenQASM 2.0 Available
Cirq v0.2
PennyLane v0.2

Quick Usage

Via Circuit Convenience Methods

import quantsdk as qs

circuit = qs.Circuit(2).h(0).cx(0, 1).measure_all()

# Export
qc = circuit.to_qiskit()         # -> qiskit.QuantumCircuit
qasm = circuit.to_openqasm()     # -> str (OpenQASM 2.0)

# Import
circuit2 = qs.Circuit.from_qiskit(qc)
circuit3 = qs.Circuit.from_openqasm(qasm)

Via Interop Module

from quantsdk.interop import to_qiskit, from_qiskit, to_openqasm, from_openqasm

# Export
qc = to_qiskit(circuit)
qasm_str = to_openqasm(circuit)

# Import
circuit = from_qiskit(qc)
circuit = from_openqasm(qasm_str)

Qiskit Interop

to_qiskit

to_qiskit

to_qiskit(circuit: Circuit) -> QuantumCircuit

Convert a QuantSDK Circuit to a Qiskit QuantumCircuit.

PARAMETER DESCRIPTION
circuit

The QuantSDK circuit to convert.

TYPE: Circuit

RETURNS DESCRIPTION
QuantumCircuit

A Qiskit QuantumCircuit equivalent.

RAISES DESCRIPTION
ImportError

If qiskit is not installed.

Example::

import quantsdk as qs
from quantsdk.interop import to_qiskit

circuit = qs.Circuit(2)
circuit.h(0).cx(0, 1).measure_all()

qiskit_circuit = to_qiskit(circuit)
print(qiskit_circuit)

from_qiskit

from_qiskit

from_qiskit(qiskit_circuit: QuantumCircuit) -> Circuit

Convert a Qiskit QuantumCircuit to a QuantSDK Circuit.

PARAMETER DESCRIPTION
qiskit_circuit

The Qiskit circuit to convert.

TYPE: QuantumCircuit

RETURNS DESCRIPTION
Circuit

A QuantSDK Circuit equivalent.

RAISES DESCRIPTION
ImportError

If qiskit is not installed.

ValueError

If the Qiskit circuit contains unsupported gates.

Example::

from qiskit.circuit import QuantumCircuit
from quantsdk.interop import from_qiskit

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

circuit = from_qiskit(qc)
print(circuit.draw())

Gate Mapping

All 50+ QuantSDK gates are mapped to their Qiskit equivalents:

QuantSDK Qiskit
HGate qiskit.circuit.library.HGate
CXGate qiskit.circuit.library.CXGate
RZGate(theta) qiskit.circuit.library.RZGate(theta)
ToffoliGate qiskit.circuit.library.CCXGate
... ...

OpenQASM Interop

to_openqasm

to_openqasm

to_openqasm(circuit: Circuit) -> str

Export a QuantSDK Circuit as an OpenQASM 2.0 string.

PARAMETER DESCRIPTION
circuit

The QuantSDK circuit to convert.

TYPE: Circuit

RETURNS DESCRIPTION
str

An OpenQASM 2.0 compliant string.

Example::

import quantsdk as qs
from quantsdk.interop import to_openqasm

circuit = qs.Circuit(2)
circuit.h(0).cx(0, 1).measure_all()

qasm_str = to_openqasm(circuit)
print(qasm_str)

from_openqasm

from_openqasm

from_openqasm(qasm_str: str) -> Circuit

Parse an OpenQASM 2.0 string into a QuantSDK Circuit.

PARAMETER DESCRIPTION
qasm_str

An OpenQASM 2.0 compliant string.

TYPE: str

RETURNS DESCRIPTION
Circuit

A QuantSDK Circuit.

RAISES DESCRIPTION
ValueError

If the QASM string is malformed or contains unsupported gates.

Example::

from quantsdk.interop import from_openqasm

qasm = '''
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
'''

circuit = from_openqasm(qasm)
print(circuit.draw())

Supported QASM Gates

The OpenQASM exporter supports all standard qelib1.inc gates plus custom gate definitions for QuantSDK-specific gates.

OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];

Notes

  • Qiskit interop requires pip install quantsdk[interop] (or quantsdk[ibm])
  • OpenQASM interop requires pip install quantsdk[interop] (uses Qiskit's QASM parser for import)
  • Gate parameters (rotation angles) are preserved exactly during round-trips
  • Measurement mappings are preserved during conversion
  • Circuit names are carried over when available