Source code for uniqc.visualization.circuit

"""Quantum circuit visualization tools.

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

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

from uniqc.compile.converter import convert_qasm_to_oir


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
[docs] def draw_html(ir_str, language="OriginIR", output_path=None, *, title="Quantum circuit"): """Render a static HTML/SVG circuit diagram. The HTML output is intentionally static: gates expose parameters and raw operation data through native SVG hover tooltips, with no editable state or JavaScript dependency. """ if language == "OriginIR": circuit_text = ir_str elif language == "QASM": circuit_text = convert_qasm_to_oir(ir_str) else: raise ValueError(f"Unsupported language: {language}. \n") from uniqc.visualization.timeline import circuit_to_html return circuit_to_html(circuit_text, output_path=output_path, title=title)
if __name__ == "__main__": from uniqc.circuit_builder import generate_sub_gateset_originir, random_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)