跳转到主要内容

将OpenQASM 2字符串解析为Qiskit电路的导入器

项目描述

从OpenQASM 2到Qiskit的导入器

License Release Downloads Coverage Status

[!IMPORTANT]

此包已过时。它已被包含在Qiskit本身中,版本为qiskit==0.43.0(当时为qiskit-terra==0.24.0),版本为0.5.3。不再需要安装此包;只需使用qiskit.qasm2.loadqiskit.qasm2.loads。Qiskit版本正在积极开发,此包不再更新。

README和包本身中所有关于Qiskit的引用都意味着Qiskit版本<0.43,在此包被包含到Qiskit之前。

此存储库提供了Python包qiskit_qasm2,它提供了OpenQASM 2到Qiskit的QuantumCircuit的快速解析器。它通常比Qiskit的本地解析器快10倍或更多。API很简单

  • qiskit_qasm2.load接受一个文件名,并返回QuantumCircuit
  • qiskit_qasm2.loads接受一个字符串中的OpenQASM 2程序,并返回QuantumCircuit

完整的文档发布在https://jakelishman.github.io/qiskit-qasm2

简单的解析示例

import qiskit_qasm2
program = """
    OPENQASM 2.0;
    include "qelib1.inc";
    qreg q[2];
    creg c[2];

    h q[0];
    cx q[0], q[1];

    measure q -> c;
"""
qiskit_qasm2.loads(program).draw()
     ┌───┐     ┌─┐
q_0: ┤ H ├──■──┤M├───
     └───┘┌─┴─┐└╥┘┌─┐
q_1: ─────┤ X ├─╫─┤M├
          └───┘ ║ └╥┘
c: 2/═══════════╩══╩═
                0  1

功能

解析器支持OpenQASM 2规范的所有内容,包括

  • 寄存器定义和用法(qregcreg);
  • 作为特殊内置包含的qelib1.inc,正如论文中所述;
  • 通用包含,可以指定搜索路径;
  • 自定义gateopaque声明;
  • 门、测量和重置广播;
  • 条件门应用、测量和重置;
  • 在门参数列表中使用科学计算器函数进行常量折叠;
  • 在自定义门体内部的参数上的数学表达式。

此外,解析器还包括以下选项

  • 修改OpenQASM 2中include语句的搜索路径;
  • 定义如何将一些命名的OpenQASM 2门应用转换为Qiskit形式的覆盖规则;
  • 为OpenQASM 2定义新的内置量子指令;
  • 定义新的内置经典科学计算函数。

Qiskit的内置解析器默认添加了一些额外规范,没有选项可以禁用它们。这主要采取自定义门覆盖的形式,以及与论文中的描述相比,Terra的qelib1.inc版本中各种额外的门。这个解析器比Qiskit的更类型安全,但包含兼容模式,以简化从使用Qiskit解析器的过渡。

安装

使用pip安装最新的qiskit_qasm2包;

pip install qiskit_qasm2

开发

如果您想为此项目做出贡献,请首先阅读我们的贡献指南

通过pip安装开发需求来设置您的开发环境;

pip install -r requirements-dev.txt tox

这安装的包比运行时包的依赖项要多一些,因为我们还包含了一些用于测试的工具,例如toxpytest

您还需要一个有效的Rust工具链。在Linux、macOS或Windows上,最简单的方法是使用rustup安装。

在安装开发需求后,您可以使用以下命令安装包的编辑版本:

pip install -e .

之后,您对库代码所做的任何更改都将在新打开的Python解释器会话中立即呈现。

这个包主要是我学习如何编写底层词法分析器的一些借口。这就是为什么Rust crate不使用任何词法分析器生成库。您可以在文档的开发部分中了解更多关于架构和一些设计决策的信息。

构建文档

在安装开发需求后,命令

tox -e docs

将构建HTML文档,并将其放置在docs/_build/html中。此存储库的main分支的文档状态已发布到https://jakelishman.github.io/qiskit-qasm2

代码风格和代码检查

此存储库的Python组件使用black格式化,Rust组件使用rustfmt。您可以通过运行以下命令对所需文件运行这些工具:

tox -e style

可以使用以下命令运行完整的代码检查套件:

tox -e lint

许可证

本项目采用Apache许可证2.0版本授权。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源代码发行版

qiskit_qasm2-0.5.3.1.tar.gz (67.0 kB 查看哈希值)

上传时间 源代码

构建发行版

qiskit_qasm2-0.5.3.1-cp311-cp311-win_amd64.whl (268.4 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

qiskit_qasm2-0.5.3.1-cp311-cp311-win32.whl (254.8 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86

qiskit_qasm2-0.5.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (376.7 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

qiskit_qasm2-0.5.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (386.8 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qiskit_qasm2-0.5.3.1-cp311-cp311-macosx_11_0_arm64.whl (375.0 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

qiskit_qasm2-0.5.3.1-cp311-cp311-macosx_10_9_x86_64.whl (386.5 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

qiskit_qasm2-0.5.3.1-cp310-cp310-win_amd64.whl (268.4 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

qiskit_qasm2-0.5.3.1-cp310-cp310-win32.whl (254.8 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86

qiskit_qasm2-0.5.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (376.7 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

qiskit_qasm2-0.5.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (386.8 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qiskit_qasm2-0.5.3.1-cp310-cp310-macosx_11_0_arm64.whl (375.0 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

qiskit_qasm2-0.5.3.1-cp310-cp310-macosx_10_9_x86_64.whl (386.5 kB 查看哈希)

上传时间 CPython 3.10 macOS 10.9+ x86-64

qiskit_qasm2-0.5.3.1-cp39-cp39-win_amd64.whl (268.8 kB 查看哈希)

上传时间 CPython 3.9 Windows x86-64

qiskit_qasm2-0.5.3.1-cp39-cp39-win32.whl (255.1 kB 查看哈希)

上传时间 CPython 3.9 Windows x86

qiskit_qasm2-0.5.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (377.1 kB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

qiskit_qasm2-0.5.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (387.3 kB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qiskit_qasm2-0.5.3.1-cp39-cp39-macosx_11_0_arm64.whl (375.3 kB 查看哈希)

上传时间 CPython 3.9 macOS 11.0+ ARM64

qiskit_qasm2-0.5.3.1-cp39-cp39-macosx_10_9_x86_64.whl (387.0 kB 查看哈希)

上传时间 CPython 3.9 macOS 10.9+ x86-64

qiskit_qasm2-0.5.3.1-cp38-cp38-win_amd64.whl (269.0 kB 查看哈希)

上传时间 CPython 3.8 Windows x86-64

qiskit_qasm2-0.5.3.1-cp38-cp38-win32.whl (255.5 kB 查看哈希)

上传时间 CPython 3.8 Windows x86

qiskit_qasm2-0.5.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (377.3 kB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

qiskit_qasm2-0.5.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (387.7 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qiskit_qasm2-0.5.3.1-cp38-cp38-macosx_11_0_arm64.whl (375.5 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

qiskit_qasm2-0.5.3.1-cp38-cp38-macosx_10_9_x86_64.whl (387.4 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

qiskit_qasm2-0.5.3.1-cp37-cp37m-win_amd64.whl (269.1 kB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

qiskit_qasm2-0.5.3.1-cp37-cp37m-win32.whl (255.4 kB 查看哈希值)

上传于 CPython 3.7m Windows x86

qiskit_qasm2-0.5.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (377.3 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

qiskit_qasm2-0.5.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (387.7 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qiskit_qasm2-0.5.3.1-cp37-cp37m-macosx_10_9_x86_64.whl (351.1 kB 查看哈希值)

上传于 CPython 3.7m macOS 10.9+ x86-64

由以下支持