线路分析与绘图
draw() 面向展示,analyze() 面向结构化统计。二者都不会执行线路,也不会改变线路内容。
from unitarylab import Circuit
qc = Circuit(2)
qc.h(0)
qc.cx(0, 1)
qc.draw()
qc.draw(filename="circuit.png", title="Bell State")
qc.draw(output="text")
qc.draw(output="latex")output 支持 Matplotlib、纯文本和 LaTeX(quantikz)。在 Notebook 中图形内联显示,在普通脚本中打开独立窗口。
draw(filename=None, title=None, compact=True, output="mpl", **kwargs)| 输出 | 返回或行为 | 适用场景 |
|---|---|---|
mpl | Matplotlib 图形,可通过 filename 保存 | Notebook、报告和图片文件 |
text | 等宽字符线路 | 终端、日志和代码审查 |
latex | quantikz LaTeX | 论文和排版系统 |
大型线路可先 decompose() 查看块门内部,或保留块门获得更紧凑的总览。LaTeX 输出需要在支持 quantikz 的环境中编译。
CircuitInfo
info = qc.analyze(show=False)
info.show()
info.show(sections=["overview", "coupling_map"])
info.show(sections="qubit_history", qubit=0)| 方法 | 说明 |
|---|---|
size() / depth() | 门数和贪心分层深度 |
count_ops() | 按门类型计数 |
count_single_qubit_gates() 等 | 按作用比特数计数 |
count_parameterized_gates() | 参数化门数量 |
get_qubit_usage() | 各比特操作次数 |
get_coupling_map() | 双比特门耦合关系 |
get_qubit_history() | 指定比特操作历史 |
get_instructions() / get_layers() / get_parameters() | 指令、分层和参数 |
get_summary() / to_dict() | 结构化分析结果 |
不含测量等非酉操作的线路还可调用 get_matrix();get_matrix(m=1) 返回左上角 子块。
analyze(sections=None, show=True, qubit=None) 返回 CircuitInfo。设置 show=False 可避免打印,适合在程序中读取统计;sections 可传单个名称或列表。
规模与限制
- 绘图和分析只处理线路结构,不能用于判断执行结果是否正确。
depth()使用线路分析器的分层规则,与硬件映射后的实际调度深度可能不同。get_matrix()需要构造 矩阵,只适合小型无测量线路。- 保存图片时应使用与文件格式匹配的扩展名,并确保目标目录存在。
相关页面
最后更新于