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) - QuarkStudio (OpenQASM 2.0) - IBM (qiskit) - TianYan (QCIS text, via cqlib) - LogicalQubit (lqcloud QuantumCircuit)
Usage:
from uniqc.backend_adapter.circuit_adapter import OriginQCircuitAdapter, 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)
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 – UnifiedQuantum Circuit object.
- Returns:
Provider-native circuit object.
- 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 – UnifiedQuantum Circuit object.
- Returns:
qiskit.QuantumCircuit object.
- adapt_with_transpilation(circuit, backend=None, optimization_level=1, **kwargs)[source]¶
Convert and transpile the circuit for a specific backend.
- Parameters:
circuit – UnifiedQuantum Circuit object.
backend – Qiskit backend to transpile for.
optimization_level – Transpiler optimization level (0-3).
**kwargs – Additional arguments for qiskit.compiler.transpile.
- Returns:
Transpiled qiskit.QuantumCircuit object.
- class uniqc.backend_adapter.circuit_adapter.LogicalQubitCircuitAdapter[source]¶
Bases:
CircuitAdapter[Any]Adapter for converting UnifiedQuantum Circuit to an lqcloud QuantumCircuit.
- SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'T', 'SX', 'I', 'RX', 'RY', 'RZ', 'U1', 'CNOT', 'CZ', 'SWAP', 'ISWAP', 'TOFFOLI', 'MEASURE', 'BARRIER']¶
- 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 – UnifiedQuantum Circuit object.
- Returns:
OriginIR format string.
- class uniqc.backend_adapter.circuit_adapter.QuarkCircuitAdapter[source]¶
Bases:
CircuitAdapter[str]Adapter for converting UnifiedQuantum Circuit to OpenQASM 2.0 for QuarkStudio.
QuarkStudio’s 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']¶
- class uniqc.backend_adapter.circuit_adapter.TianyanCircuitAdapter[source]¶
Bases:
CircuitAdapter[str]Adapter for converting UnifiedQuantum Circuit to QCIS text (TianYan).
Returns the QCIS string;
TianyanAdaptersubmits it viacqlib.TianYanPlatform.submit_job.- SUPPORTED_GATES = ['H', 'X', 'Y', 'Z', 'S', 'T', 'SX', 'RX', 'RY', 'RZ', 'CNOT', 'CZ', 'SWAP', 'XY', 'TOFFOLI', 'MEASURE', 'BARRIER']¶
- uniqc.backend_adapter.circuit_adapter.originir_to_lqcloud_circuit(originir, circuit_cls)[source]¶
Convert an OriginIR string to an lqcloud
QuantumCircuit.Gate methods follow qiskit conventions: parameterised gates take the angle first (
rx(theta, qubit)), measurements takemeasure(qubit, clbit).- Parameters:
originir – Circuit in OriginIR format.
circuit_cls – The
lqcloud.QuantumCircuitclass (passed in so this function never imports lqcloud itself).
- Returns:
An lqcloud QuantumCircuit object.
- Raises:
ValueError – If a line cannot be parsed.
NotImplementedError – If the circuit uses a gate or construct with no lqcloud equivalent.
- uniqc.backend_adapter.circuit_adapter.originir_to_qcis(originir)[source]¶
Convert an OriginIR string to QCIS text for the TianYan platform.
QCIS is a line-based format, e.g.
H Q0,RX Q0 0.12,CZ Q0 Q6,M Q0. Measurement lines carry no classical-bit index — the measurement order is the cbit order, soMEASURElines must assign cbits sequentially (the uniqc convention).- Parameters:
originir – Circuit in OriginIR format.
- Returns:
QCIS text (one instruction per line).
- Raises:
ValueError – If a line cannot be parsed or a qubit index is out of range for the
QINITsize.NotImplementedError – If the circuit uses a gate or construct with no QCIS equivalent.