You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Piquasso量子模拟器中创建自定义门并永久添加至本地内部库?

能否在Piquasso中添加自定义永久门?可行,步骤如下

结论:完全可行

你可以通过修改本地Piquasso的内置模块,将自定义门永久加入其门库,以下是详细操作步骤及理由:


步骤1:定位本地Piquasso的门模块目录

首先找到Piquasso安装在你电脑上的具体位置:

  • 打开终端/命令提示符,运行命令:
    pip show piquasso
    
    输出里的Location字段就是Piquasso的安装根目录(Windows系统路径通常为C:\Users\你的用户名\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.x_qbz5n2kfra8p0\LocalCache\local-packages\Python3x\site-packages,类Unix系统类似/usr/local/lib/python3.x/site-packages)。
  • 进入该目录下的piquasso/gates文件夹,这是Piquasso内置门的存放位置,所有内置门的代码都在这里。

理由:只有找到内置门的存储路径,才能将自定义门整合到同一模块体系中,实现和内置门一致的调用方式。

步骤2:编写自定义门的代码

在piquasso/gates目录下新建一个Python文件,比如命名为custom_gates.py,然后写入自定义门的实现代码。以下是一个可直接运行的示例(自定义一个XY平面旋转门):

from piquasso.core.gates.base import Gate
from piquasso.core import _math


class XYRotationGate(Gate):
    """自定义XY平面旋转门,绕XY轴旋转指定角度θ"""

    def __init__(self, theta):
        super().__init__()
        self.theta = theta

    def _apply(self, state, backend):
        # 定义门的变换矩阵(单量子比特XY旋转的标准矩阵表达式)
        matrix = _math.cos(self.theta / 2) * _math.eye(2) - 1j * _math.sin(self.theta / 2) * (_math.sigmax() + _math.sigmay())
        
        # 调用Piquasso后端接口应用矩阵到量子态
        return backend.apply_matrix(state, matrix)

理由:

  • 必须继承Piquasso的Gate基类,这是所有门的统一接口,确保自定义门能被Piquasso的电路系统识别;
  • _apply方法是门的核心逻辑,负责定义门对量子态的变换,使用Piquasso内置的_math工具类可避免和外部库冲突,同时适配Piquasso的内部计算逻辑;
  • 类的文档字符串可帮助你后续快速识别门的功能。

步骤3:将自定义门加入内置模块的导入列表

打开piquasso/gates/__init__.py文件,在文件末尾添加一行导入语句:

from .custom_gates import XYRotationGate

理由:Piquasso的gates模块通过__init__.py暴露可直接导入的类,添加这行后,你就能像调用内置门一样,用from piquasso.gates import XYRotationGate导入自定义门。

步骤4:验证自定义门是否可用

编写一段测试代码,验证自定义门能否正常运行:

from piquasso import State, Circuit
from piquasso.gates import XYRotationGate, Measure

with Circuit() as circuit:
    XYRotationGate(theta=0.5) | 0
    Measure() | 0

state = State(1)
result = state.execute(circuit)

print("测量结果:", result.samples)

运行这段代码,如果能正常输出测量结果,说明自定义门已经成功加入本地Piquasso门库。


注意事项

  • 如果你后续更新Piquasso,site-packages里的文件会被覆盖,之前添加的自定义门会丢失,所以更新后需要重新执行上述步骤;
  • 若不想修改内置模块,也可以创建独立Python文件存放自定义门,每次使用时手动导入,但这不属于“永久添加到内部门库”的范畴。

内容的提问来源于stack exchange,提问作者Aech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:22:38