QASMToQProg¶
简介¶
通过该功能模块,可以解析QASM文本文件(或者字符串),将其中的量子逻辑门操作信息提取出来,得到QPanda 2内部可操作的量子程序。
接口介绍¶
QPanda 2提供了QASM文件转换工具接口 convert_qasm_to_qprog
。
- convert_qasm_to_qprog(file_path: str, machine: QuantumMachine) list: ¶
该函数的作用是从给定的 QASM 文件中读取指令集并将其转换为量子程序,同时需要提供一个已初始化的量子机器实例。
- 参数:
file_path (str) – QASM 文件路径。
machine (QuantumMachine) – 已初始化的量子机器实例。
- 返回:
包含转换后的 QProg、量子比特列表和经典比特列表的列表。
- 返回类型:
list
- 抛出:
run_fail – QASM 转换为 QProg 失败。
返回的列表包含了转换后的 QProg 以及与之关联的量子比特列表和经典比特列表。您可以根据需要进一步操作这些信息,例如执行量子程序、获取测量结果等。
示例用法:
from pyqpanda.pyQPanda import QMachineType,destroy_quantum_machine, init_quantum_machine from pyqpanda.pyQPanda import convert_qasm_to_qprog #########################准备包含QASM指令字符串的文件 qasm_file = "testfile.txt" f = open(qasm_file, mode='w', encoding='utf-8') f.write("""OPENQASM 3.0; include "stdgates.inc"; qubit[4] q; bit[2] c; rx(3.14) q[0]; phase(3.18) q[0]; c[0] = measure q[0]; c[1] = measure q[1]; """) f.close() #######################准备计算资源 machine = init_quantum_machine(QMachineType.CPU) #######################根据包含QASM指令字符串的文件生成QProg实例 qprog, qbits, cbits = convert_qasm_to_qprog(qasm_file,machine) # 打印转换结果 print("qprog:",end='\n') print(qprog,end='\n') print("qbits:",end='\n') print(qbits) print("cbits:",end='\n') print(cbits) #######################释放计算资源 destroy_quantum_machine(machine)
示例代码输出结果:
### opened qasm file:testfile.txt qprog: ┌────────────┐ ┌───────────┐ ┌─┐ q_0: |0>─┤RX(3.140000)├ ┤P(3.180000)├ ─┤M├ └┬─┬─────────┘ └───────────┘ └╥┘ q_1: |0>──┤M├────────── ───────────── ──╫─ └╥┘ ║ c : / ═══╩════════════════════════════╩═ 1 0 qbits: [<pyqpanda.pyQPanda.Qubit object at 0x000001553FF218B0>, <pyqpanda.pyQPanda.Qubit object at 0x000001553FF21870>, <pyqpanda.pyQPanda.Qubit object at 0x000001553FF21D30>, <pyqpanda.pyQPanda.Qubit object at 0x000001553FF4FAB0>] cbits: [<pyqpanda.pyQPanda.ClassicalCondition object at 0x0000015571C8E4B0>, <pyqpanda.pyQPanda.ClassicalCondition object at 0x0000015571C5BCB0>]
QPanda 2提供了QASM指令字符串转换工具接口 convert_qasm_string_to_qprog
。
- convert_qasm_string_to_qprog(qasm_str: str, machine: QuantumMachine) list: ¶
该函数的作用是从给定的 QASM 文件中读取指令集并将其转换为量子程序,同时需要提供一个已初始化的量子机器实例。
- 参数:
qasm_str (str) – QASM指令字符串
machine (QuantumMachine) – 已初始化的量子机器实例。
- 返回:
包含转换后的 QProg、量子比特列表和经典比特列表的列表。
- 返回类型:
list
- 抛出:
run_fail – QASM 转换为 QProg 失败。
返回的列表包含了转换后的 QProg 以及与之关联的量子比特列表和经典比特列表。您可以根据需要进一步操作这些信息,例如执行量子程序、获取测量结果等。
示例用法:
from pyqpanda.pyQPanda import QMachineType,destroy_quantum_machine, init_quantum_machine from pyqpanda.pyQPanda import convert_qasm_string_to_qprog #########################准备包含QASM指令字符串 qasm_str = """OPENQASM 3.0; include "stdgates.inc"; qubit[4] q; bit[2] c; rx(3.14) q[0]; phase(3.18) q[0]; c[0] = measure q[0]; c[1] = measure q[1]; """ #######################准备计算资源 machine = init_quantum_machine(QMachineType.CPU) #######################根据包含QASM指令字符串的文件生成QProg实例 qprog, qbits, cbits = convert_qasm_string_to_qprog(qasm_str,machine) # 打印转换结果 print("qprog:",end='\n') print(qprog,end='\n') print("qbits:",end='\n') print(qbits) print("cbits:",end='\n') print(cbits) #######################释放计算资源 destroy_quantum_machine(machine)
示例代码输出结果:
qprog: ┌────────────┐ ┌───────────┐ ┌─┐ q_0: |0>─┤RX(3.140000)├ ┤P(3.180000)├ ─┤M├ └┬─┬─────────┘ └───────────┘ └╥┘ q_1: |0>──┤M├────────── ───────────── ──╫─ └╥┘ ║ c : / ═══╩════════════════════════════╩═ 1 0 qbits: [<pyqpanda.pyQPanda.Qubit object at 0x000001A3AF6614B0>, <pyqpanda.pyQPanda.Qubit object at 0x000001A3AF661570>, <pyqpanda.pyQPanda.Qubit object at 0x000001A3AF6615F0>, <pyqpanda.pyQPanda.Qubit object at 0x000001A3AF6615B0>] cbits: [<pyqpanda.pyQPanda.ClassicalCondition object at 0x000001A3E0F068B0>, <pyqpanda.pyQPanda.ClassicalCondition object at 0x000001A3C8E72D70>]