Skip to content
分享链接
回到顶部

其他工具

1. 可视化

1.1 线路可视化

量子线路支持以文本格式和图像格式进行可视化展示,便于用户理解和调试量子操作流程。

python
from math import pi
from cqlib import Circuit, Parameter

theta = Parameter('theta')
phi = Parameter('phi')
c = Circuit(3, [theta, phi])
c.h(0)
c.rx(1, 0.2)
c.rx(2, pi / 2)
c.cx(0, 1)
c.cx(0, 2)
c.rz(0, theta)
c.crz(1, 2, theta + phi)
c.barrier(0, 1, 2)
c.measure_all()

文本格式可视化

支持以字符图的形式展示线路结构,适用于终端环境的快速查看。

python
print(c.draw('text'))
 Q0: ──────H─────■──■─────RZ(theta)─────│──M─
                 │  │                   │    
 Q1: ───RX(0.2)──X──┼─────────■─────────│──M─
                    │         │         │    
 Q2: ───RX(π/2)─────X──RZ(phi + theta)──│──M─
python
_ = c.draw('mpl')

png

1.2 结果可视化

python
from math import pi

from cqlib import Circuit
from cqlib.simulator import StatevectorSimulator
from cqlib.visualization import draw_histogram, draw_gplot

c = Circuit(2)
c.rx(1, pi / 4)
c.cx(0, 1)
c.measure_all()

sim = StatevectorSimulator(c)
probs = sim.probs()
print(f'probs: {probs}')
_ = draw_histogram(probs, title='result probs')
probs: {'00': 0.8535533905932737, '01': 0.0,
 '10': 0.14644660940672624, '11': 0.0}

png

2. 量子指令集

Cqlib 是基于 QCIS (Quantum Control Instruction Set)构建,并支持与 OpenQASM2.0 指令集的相互转换,方便在不同平台兼容与迁移。

2.1 QCIS

QCIS(Quantum Control Instruction Set)是转为超导量子计算机硬件设计的一套量子控制指令集,旨在对底层物理操作进行抽象标准化。

  • 与 QASM(Quantum Assembly Language)相比,QCIS更贴近底层物理系统,而QASM更侧重量子门级的抽象表示。
python
from cqlib import Circuit

c = Circuit(2)
c.rx(1, pi / 4)
c.cx(0, 1)
c.measure_all()

print(c.as_str())
RX Q1 0.7853981633974483
CX Q0 Q1
M Q0
M Q1
  • Cqlib 提供 Circuit.qcis 属性,可直接输出分解为 QCIS 指令的量子门列表,便于下发至实际硬件执行。
python
print(c.qcis)
RX Q1 0.7853981633974483
H Q1
CZ Q0 Q1
H Q1
M Q0
M Q1

示例:加载 QCIS 指令以支持在底层物理量子设备上运行。

python
qcis = """
RX Q1 0.7853981633974483
CX Q0 Q1
H Q0
CZ Q0 Q1
M Q0
M Q1
"""

c = Circuit.load(qcis)
print(c.draw())
 Q0: ────────────■──H──■──M─
                 │     │    
 Q1: ───RX(π/4)──X─────■──M─

2.2 OpenQASM2.0

OpenQASM 2.0 是一种广泛使用的量子汇编语言标准,用于构建和描述量子电路,支持经典-量子混合编程。

  • 可作为仿真机或真机平台的通用中间表示(IR),便于跨平台部署。
  • Cqlib支持将 OpenQASM 2.0 代码加载为量子线路对象,并可将现有量子线路导出为 QASM 格式。

生成量子线路

python
from cqlib import Circuit
from cqlib.utils import qasm2

c = Circuit(2)
c.rx(1, pi / 4)
c.cx(0, 1)
c.measure_all()

qasm = qasm2.dumps(c)
print(qasm)
// Generated by Cqlib v1.3.4

OPENQASM 2.0;
include "qelib1.inc";

qreg q[2];

creg c[2];

rx(0.7853981634) q[1];
cx q[0], q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];

示例:从 OpenQASM 文件加载线路,或生成符合 OpenQASM 规范的代码。

python
from cqlib.utils import qasm2
from cqlib.visualization import draw_text

qasm = """
OPENQASM 2.0;
include "qelib1.inc";

qreg q[2];
creg c[2];

h q[0];
rx(0.7853981634) q[1];
cx q[0], q[1];
h q[1];
barrier q;

measure q[0] -> c[0];
measure q[1] -> c[1];
"""

c = qasm2.loads(qasm)
print(c.draw())
 Q0: ──────H─────■─────│──M─
                 │     │    
 Q1: ───RX(π/4)──X──H──│──M─