uniqc.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) - IBM (qiskit)

Usage:

from uniqc.circuit_adapter import OriginQCircuitAdapter, QuafuCircuitAdapter, 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)

ibm_adapter = IBMCircuitAdapter()
qiskit_circuit = ibm_adapter.adapt(circuit)
class uniqc.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.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.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 pyqpanda QProg.

Parameters:

circuit (Circuit) – UnifiedQuantum Circuit object.

Returns:

pyqpanda3.core.QProg object.

Return type:

Any

get_supported_gates()[source]#

Return the list of gate names supported by this adapter.

Return type:

List[str]

class uniqc.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', 'RX', 'RY', 'RZ', 'CNOT', 'CZ', 'MEASURE']#
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]