Skip to content

QASM 转换 ​

用于在量子程序(QProg)和 OpenQASM 2.0 中间表示格式之间进行转换的 API 参考。

convert_qasm_string_to_qprog ​

解析 OpenQASM 2.0 指令集字符串并返回对应的量子程序。

签名 ​

python
convert_qasm_string_to_qprog(
    qasm_str: str,
) -> QProg

参数 ​

参数类型描述
qasm_strstr要转换的 OpenQASM 2.0 指令集字符串。

返回值 ​

转换后的 QProg 量子程序。

异常 ​

异常类型描述
RuntimeError如果 QASM 字符串包含语法错误或引用了未定义的量子门或量子比特。

示例 ​

python
from pyqpanda3.intermediate_compiler import convert_qasm_string_to_qprog

qasm_str = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
"""
prog = convert_qasm_string_to_qprog(qasm_str)

convert_qasm_file_to_qprog ​

读取 OpenQASM 2.0 文件并返回对应的量子程序。

签名 ​

python
convert_qasm_file_to_qprog(
    qasm_filepath: str,
) -> QProg

参数 ​

参数类型描述
qasm_filepathstr包含 OpenQASM 2.0 指令集文本的文件路径。

返回值 ​

转换后的 QProg 量子程序。

异常 ​

异常类型描述
RuntimeError如果文件无法读取或包含语法错误。
FileNotFoundError如果指定的文件路径不存在。

示例 ​

python
import tempfile
from pyqpanda3.intermediate_compiler import convert_qasm_file_to_qprog

qasm = '''OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0],q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
'''

with tempfile.NamedTemporaryFile(mode='w', suffix='.qasm', delete=False) as f:
    f.write(qasm)
    path = f.name

prog = convert_qasm_file_to_qprog(path)  # a missing or unreadable file raises RuntimeError

convert_qprog_to_qasm ​

将量子程序转换为 OpenQASM 2.0 字符串表示。

签名 ​

python
convert_qprog_to_qasm(
    prog: QProg,
    precision: int = 8,
) -> str

参数 ​

参数类型描述
progQProg要转换的量子程序。
precisionint浮点门参数的小数位数。必须是非负整数。默认为 8。

返回值 ​

表示量子程序的 OpenQASM 2.0 指令集字符串。

示例 ​

python
from pyqpanda3.intermediate_compiler import convert_qprog_to_qasm
from pyqpanda3.core import QProg, H, CNOT

prog = QProg() << H(0) << CNOT(0, 1)
qasm_str = convert_qprog_to_qasm(prog, precision=6)
print(qasm_str)

运行结果:

OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[0];
h q[0];
cx q[0],q[1];

另见 ​

Released under the MIT License.