76 个版本 (33 个稳定版)

1.15.2-alpha.32024 年 8 月 8 日
1.15.2-alpha.12024 年 7 月 25 日
1.11.0-alpha.22024 年 3 月 28 日
1.8.0 2023 年 12 月 8 日
0.5.1 2021 年 7 月 29 日

#13 in #qoqo

Download history 157/week @ 2024-05-03 200/week @ 2024-05-10 778/week @ 2024-05-17 875/week @ 2024-05-24 505/week @ 2024-05-31 753/week @ 2024-06-07 656/week @ 2024-06-14 536/week @ 2024-06-21 629/week @ 2024-06-28 748/week @ 2024-07-05 239/week @ 2024-07-12 1101/week @ 2024-07-19 795/week @ 2024-07-26 676/week @ 2024-08-02 276/week @ 2024-08-09 232/week @ 2024-08-16

2,228 每月下载量
用于 10 个 crate (3 直接)

Apache-2.0

81KB
996 代码行数(不包括注释)

qoqo

量子操作量子操作
是的,我们使用 重复

qoqo/roqoqo 是由 HQS Quantum Simulations 提供的用于表示量子电路的工具包。

有关详细介绍,请参阅 用户文档qoqo 示例仓库

roqoqo/qoqo 是什么

  • 一个用于表示量子程序的工具包,包括电路和测量信息
  • 一个轻量级的运行时,用于运行量子测量
  • 一种序列化量子电路和测量信息的方法
  • 一组可选的设备、模拟器和工具包接口(例如 qoqo_questqoqo_mockqoqo_qasm

roqoqo/qoqo 不是什么

  • 将电路转换为特定门集合的分解器
  • 量子电路优化器
  • 一组量子算法

此存储库包含两个组件

  • roqoqo:核心 Rust 库
  • qoqo:roqoqo 的 Python 接口

roqoqo

Crates.io GitHub Workflow Status docs.rs Crates.io codecov

roqoqo 提供

  • 一个表示量子电路的 Circuit 结构体
  • 一个表示使用不同测量方法进行量子程序的 QuantumProgram 枚举
  • 表示可以在任何通用量子计算机上执行(分解)的单量子比特、双量子比特、多量子比特和测量操作的结构体
  • 表示仅适用于某些硬件、模拟器或对电路进行附加信息注释的所谓 PRAGMA 操作的结构体
  • 根据操作属性对操作进行分组的枚举(例如,Operation 用于所有操作或 SingleQubitGateOperation 用于作用于单个量子比特的所有幺正操作)
  • 支持符号变量
  • 基于经典寄存器的读取
  • 用于评估基于量子计算机后端返回的原始读取数据的可观察测量结构体
  • 定义了一个从qoqo到硬件和可以返回测量值的模拟器的接口标准的EvaluatingBackend特质。
  • 定义了一个获取量子计算设备连接信息和噪声模型的标准的Device特质。
  • 通过serde crate支持对CircuitQuantumProgram的序列化和反序列化。

此软件目前处于beta阶段。功能和文档尚未完整,可能会发生破坏性更改。

安装

要在Rust项目中使用roqoqo,只需将以下内容添加到项目的Cargo.toml文件的[dependencies]部分:

roqoqo = {version="1.0"}

[dependencies]部分。

qoqo

Documentation Status GitHub Workflow Status PyPI PyPI - Format Crates.io Crates.io

qoqo提供了底层roqoqo库的Python接口,包括:

  • 一个表示量子电路的Circuit
  • 一个表示量子程序的QuantumProgram
  • 表示可以在任何通用量子计算机上执行(分解)的单量子位、双量子位、多量子位和测量操作的类
  • 表示仅适用于某些硬件、模拟器或对电路进行附加信息注解的所谓PRAGMA操作的类
  • 支持符号变量
  • 基于经典寄存器的读取
  • 用于评估基于量子计算机后端返回的原始读出数据的可观测测量量的测量类
  • 电路和测量信息的序列化到json和从json反序列化。通过serde crate的帮助,序列化支持可以轻松扩展到其他目标。

安装

在Linux、macOS和Windows x86上,可以在PyPi上找到预编译的包,并通过以下方式安装:

pip install qoqo

如果您的架构没有可用的预构建python wheel,您可以使用rust工具链(例如通过rustup获得)和maturin(也通过pip获得)从源分布安装qoqo。安装rust工具链和maturin后,运行上述相同的pip install命令。在某些情况下,在macOS上可能需要提供如下所示的特定链接器参数

# can be necessary on mscOS
RUSTFLAGS="-C link-arg=-undefined -C link-arg=dynamic_lookup" pip install qoqo
RUSTFLAGS="-C link-arg=-undefined -C link-arg=dynamic_lookup" maturin build -m qoqo/Cargo.toml  --release
pip install target/wheels/$NAME_OF_WHEEL

当在提供Python接口的rust项目中使用qoqo时,请添加

qoqo = {version="1.0", default-features=false}

[dependencies]部分。

现在存在一个源分布,但需要使用rust版本> 1.47和maturin版本{ >= 0.12, < 0.13 }才能构建。

示例

由于qoqo提供了对底层roqoqo库的完整Python接口,因此为Python用户和Rust用户提供了示例。

有关示例的扩展集合,请参阅extra存储库中的jupyter笔记本qoqo_examples。qoqo示例需要qoqo_quest和qoqo_mock接口。

本项目部分得到PlanQK的支持,并部分得到QSolidPhoQuant的支持。

贡献

我们欢迎对该项目的贡献。如果您想贡献代码,请查看CONTRIBUTE.md以了解我们的代码贡献指南。

依赖关系

~4MB
~88K SLoC