uniqc.backend_adapter.circuit_adapter module

Circuit adapter layer for converting UnifiedQuantum circuits to provider-native formats.

This module provides adapter classes for converting UnifiedQuantum Circuit objects to native circuit formats used by different quantum computing platforms: - OriginQ (pyqpanda) - Quafu (pyquafu) - QuarkStudio / Quafu-SQC (OpenQASM 2.0) - IBM (qiskit)

Usage:

from uniqc.backend_adapter.circuit_adapter import OriginQCircuitAdapter, QuafuCircuitAdapter, QuarkCircuitAdapter, IBMCircuitAdapter
from uniqc.circuit_builder import Circuit

# Create a UnifiedQuantum circuit
circuit = Circuit()
circuit.h(0)
circuit.cnot(0, 1)
circuit.measure(0, 1)

# Convert to provider-native circuits
originq_adapter = OriginQCircuitAdapter()
pyqpanda_circuit = originq_adapter.adapt(circuit)

quafu_adapter = QuafuCircuitAdapter()
quafu_circuit = quafu_adapter.adapt(circuit)

quark_adapter = QuarkCircuitAdapter()
qasm2 = quark_adapter.adapt(circuit)

ibm_adapter = IBMCircuitAdapter()
qiskit_circuit = ibm_adapter.adapt(circuit)
class uniqc.backend_adapter.circuit_adapter.CircuitAdapter[source]

Bases: ABC, Generic[T]

Abstract base class for circuit adapters.

Provides a unified interface for converting UnifiedQuantum Circuit objects to provider-native circuit formats.

abstractmethod adapt(circuit)[source]

Convert a UnifiedQuantum Circuit to the provider’s native circuit format.

Parameters:

circuit (Circuit) – UnifiedQuantum Circuit object.

Returns:

Provider-native circuit object.

Return type:

T

adapt_batch(circuits)[source]

Convert multiple UnifiedQuantum Circuits to provider-native format.

Parameters:

circuits (list[Circuit]) – List of UnifiedQuantum Circuit objects.

Returns:

List of provider-native circuit objects.

Return type:

list[T]

abstractmethod get_supported_gates()[source]

Return the list of gate names supported by this adapter.

Returns:

List of supported gate names (uppercase strings).

Return type:

list[str]

class uniqc.backend_adapter.circuit_adapter.IBMCircuitAdapter[source]

Bases: CircuitAdapter[Any]

Adapter for converting UnifiedQuantum Circuit to qiskit (IBM) format.

Converts Circuit -> OriginIR -> QASM -> Qiskit QuantumCircuit.

SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'T', 'SX', 'RX', 'RY', 'RZ', 'U1', 'U2', 'U3', 'CNOT', 'CX', 'CZ', 'SWAP', 'ISWAP', 'TOFFOLI', 'CCX', 'CSWAP', 'Fredkin', 'MEASURE', 'BARRIER', 'I', 'ID']
adapt(circuit)[source]

Convert UnifiedQuantum Circuit to qiskit QuantumCircuit.

The conversion path is: UnifiedQuantum Circuit -> OriginIR -> QASM -> Qiskit QuantumCircuit

Parameters:

circuit (Circuit) – UnifiedQuantum Circuit object.

Returns:

qiskit.QuantumCircuit object.

Return type:

Any

adapt_with_transpilation(circuit, backend=None, optimization_level=1, **kwargs)[source]

Convert and transpile the circuit for a specific backend.

Parameters:
  • circuit (Circuit) – UnifiedQuantum Circuit object.

  • backend (Any) – Qiskit backend to transpile for.

  • optimization_level (int) – Transpiler optimization level (0-3).

  • **kwargs (Any) – Additional arguments for qiskit.compiler.transpile.

Returns:

Transpiled qiskit.QuantumCircuit object.

Return type:

Any

get_supported_gates()[source]

Return the list of gate names supported by this adapter.

Return type:

list[str]

class uniqc.backend_adapter.circuit_adapter.OriginQCircuitAdapter[source]

Bases: CircuitAdapter[Any]

Adapter for converting UnifiedQuantum Circuit to pyqpanda (OriginQ) format.

Uses pyqpanda3’s intermediate compiler to convert OriginIR to QProg.

SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'T', 'SX', 'RX', 'RY', 'RZ', 'RPhi', 'RPhi90', 'RPhi180', 'U1', 'U2', 'U3', 'U4', 'CNOT', 'CZ', 'SWAP', 'ISWAP', 'TOFFOLI', 'CSWAP', 'XX', 'YY', 'ZZ', 'XY', 'PHASE2Q', 'UU15', 'I', 'BARRIER', 'MEASURE']
adapt(circuit)[source]

Convert UnifiedQuantum Circuit to OriginIR string.

The OriginQAdapter.submit() receives this string and converts it to QProg internally via translate_circuit(). Returning QProg here would cause submit() to double-convert, breaking translate_circuit().

Parameters:

circuit (Circuit) – UnifiedQuantum Circuit object.

Returns:

OriginIR format string.

Return type:

str

get_supported_gates()[source]

Return the list of gate names supported by this adapter.

Return type:

list[str]

class uniqc.backend_adapter.circuit_adapter.QuafuCircuitAdapter[source]

Bases: CircuitAdapter[Any]

Adapter for converting UnifiedQuantum Circuit to pyquafu (Quafu) format.

Translates OriginIR gate by gate to quafu.QuantumCircuit.

SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'SX', 'T', 'RX', 'RY', 'RZ', 'CNOT', 'CZ', 'SWAP', 'ISWAP', 'MEASURE', 'BARRIER']
adapt(circuit)[source]

Convert UnifiedQuantum Circuit to quafu QuantumCircuit.

Parameters:

circuit (Circuit) – UnifiedQuantum Circuit object.

Returns:

quafu.QuantumCircuit object.

Return type:

Any

get_supported_gates()[source]

Return the list of gate names supported by this adapter.

Return type:

list[str]

class uniqc.backend_adapter.circuit_adapter.QuarkCircuitAdapter[source]

Bases: CircuitAdapter[str]

Adapter for converting UnifiedQuantum Circuit to OpenQASM 2.0 for QuarkStudio.

QuarkStudio’s Quafu-SQC interface accepts an OpenQASM 2.0 string in the task dictionary, so this adapter intentionally returns text rather than a provider-specific circuit object.

SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'T', 'SX', 'RX', 'RY', 'RZ', 'U1', 'U2', 'U3', 'CNOT', 'CX', 'CZ', 'SWAP', 'ISWAP', 'TOFFOLI', 'CCX', 'CSWAP', 'MEASURE', 'BARRIER', 'I', 'ID']
adapt(circuit)[source]

Convert UnifiedQuantum Circuit to OpenQASM 2.0 text.

Parameters:

circuit (Circuit)

Return type:

str

get_supported_gates()[source]

Return the list of gate names supported by this adapter.

Return type:

list[str]