Source code for uniqc.transpiler.draw

"""Quantum circuit visualization tools.

This module provides text-based circuit drawing capabilities for
quantum programs in OriginIR or QASM format.
"""

__all__ = ["draw"]
from pyqpanda3.core import draw_qprog, PIC_TYPE
from pyqpanda3.intermediate_compiler import convert_originir_string_to_qprog
from .converter import convert_qasm_to_oir, convert_oir_to_qasm

def _from_originir(originir_str):
    qprog = convert_originir_string_to_qprog(originir_str)
    return qprog

def _from_qasm(qasm_str):
    oir_str = convert_qasm_to_oir(qasm_str)
    qprog = _from_originir(oir_str)
    return qprog

[docs] def draw(ir_str, language='OriginIR'): ''' Draw the circuit in text format. Args: ir_str (str): The input circuit in OriginIR or QASM format. language (str): The language of the input circuit. Default is 'OriginIR'. Returns: qprog (QProg): The QProg object of the input circuit. ''' if language == 'OriginIR': qprog = _from_originir(ir_str) elif language == 'QASM': qprog = _from_qasm(ir_str) else: raise ValueError(f"Unsupported language: {language}. \n") print(draw_qprog(qprog, PIC_TYPE.TEXT, {}, param_show=True)) return qprog
if __name__ == '__main__': from uniqc.circuit_builder import random_originir, generate_sub_gateset_originir # small set gate_set = ['H', 'X', 'Y', 'Z', 'RX', 'RY', 'RZ', 'RPhi', 'U3' ] gate_set = generate_sub_gateset_originir(gate_set) originir_str = random_originir(n_qubits=5, n_gates=10, instruction_set=gate_set) qprog = draw(originir_str)