NoiseChannel¶
from cascaqit import NoiseChannel
NoiseChannel ¶
NoiseChannel(
channel_id: str,
channel_type: NoiseChannelType,
parameters: dict[str, float],
units: dict[str, str],
targets: NoiseTargets = "all",
model: str = "",
injection_point: str = "",
source: str = "user",
schedule_ref: str | None = None,
metadata: dict[str, Any] = dict(),
schema_version: str = "cascaqit.noise.physical.v1",
)
声明一个噪声通道,通常使用下方八种构造方法。每个方法返回 NoiseChannel,自动设置模型、注入位置和单位。probability、p01、p10 在 [0, 1] 内;rate 与 coupling 非负,duration 为正,数值均须有限。
targets="all" 作用于可用的全部逻辑目标,也可传唯一名称元组,例如 ("q0",);crosstalk 必须显式指定至少两个目标。channel_id 标识通道,source 记录参数来源。直接构造还可指定 parameters、units、model、injection_point、schedule_ref、metadata 和 schema_version;参数键必须与类型完全匹配,model 和注入位置也不能任意改写。units 字典需覆盖全部参数;它保存标签,不做单位换算,建议使用命名构造方法填写正确单位。
把通道放入 NoiseModel,再通过后端 noise 参数执行。构造成功不代表当前程序满足通道前提。完整对照见含噪 Hybrid 项目。
preparation ¶
preparation(
probability: float,
*,
targets: NoiseTargets = "all",
channel_id: str = "noise.preparation",
source: str = "user",
) -> NoiseChannel
以 probability 对所选目标施加独立比特翻转,注入在初态准备后、程序演化前。它是状态噪声,不是最终计数的翻转。
dephasing ¶
dephasing(
rate: float,
*,
targets: NoiseTargets = "all",
channel_id: str = "noise.dephasing",
source: str = "user",
) -> NoiseChannel
声明 Analog 演化中的 Lindblad 退相干,rate 单位为 1/us。需要 Analog 块;Digital 空闲区间的退相干使用 idle。
gate ¶
gate(
probability: float,
*,
targets: NoiseTargets = "all",
channel_id: str = "noise.gate",
source: str = "user",
) -> NoiseChannel
每个数字门之后,对该门目标与配置 targets 的交集施加独立比特翻转。probability 是每次注入的概率,不是整个线路的总错误率。需要 Digital 块。
idle ¶
idle(
rate: float,
*,
duration: float,
targets: NoiseTargets = "all",
channel_id: str = "noise.idle",
source: str = "user",
) -> NoiseChannel
在 Digital 块后的有限空闲区间施加退相干。rate 用 1/us,duration 用 us;当前相位翻转概率为 (1 - exp(-rate * duration)) / 2,并推进逻辑时间。它不会从门的墙钟耗时自动推导 duration。
crosstalk ¶
crosstalk(
coupling: float,
*,
duration: float,
targets: tuple[str, ...],
schedule_ref: str,
channel_id: str = "noise.crosstalk",
source: str = "user",
) -> NoiseChannel
声明相干 XX 串扰,coupling 用 rad/us、duration 用 us。targets 至少含两个不同逻辑名称;schedule_ref 必须指向支持的控制块,或使用 all_control_blocks。两个目标时演化算符为 exp(-i * coupling * duration * X⊗X);多于两个目标时使用所有目标上的 X 张量积,并非所有原子对 XX 项之和。不符合执行调度前提时会失败;它与 AHS 的范德瓦耳斯 number_number 相互作用不同。
boundary ¶
boundary(
probability: float,
*,
targets: NoiseTargets = "all",
channel_id: str = "noise.boundary",
source: str = "user",
) -> NoiseChannel
在 Hybrid 控制块边界施加概率为 probability 的幅度阻尼,需要具备块间边界的 Hybrid 程序。该参数不是连续时间衰减率。
atom_loss ¶
atom_loss(
probability: float,
*,
targets: NoiseTargets = "all",
channel_id: str = "noise.atom_loss",
source: str = "user",
) -> NoiseChannel
在 Analog 块退出时以 probability 模拟原子丢失。它会跟踪占据状态,要求 trajectory 路径;不能只把末端位值翻转当作原子丢失。
readout ¶
readout(
p01: float,
*,
p10: float | None = None,
targets: NoiseTargets = "all",
channel_id: str = "noise.readout",
source: str = "user",
) -> NoiseChannel
只改变末端测量记录:p01 是真实 0 记为 1 的概率,p10 是真实 1 记为 0 的概率;省略 p10 时取 p01。返回概率和精确观测量来自读出前状态,不能用来直接解释含读出误差的 counts。
从字典还原 NoiseChannel。还原目标、参数、单位和模型,重新校验通道类型与数值约束。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 NoiseChannel。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。