NoiseModel¶
from cascaqit import NoiseModel
NoiseModel ¶
NoiseModel(
noise_model_id: str,
channels: tuple[NoiseChannel, ...],
metadata: dict[str, Any] = dict(),
schema_version: str = "cascaqit.noise.physical.v1",
)
组合一组噪声通道,供 LocalBackend.run(..., noise=model) 使用。noise_model_id 不能为空,channels 至少包含一个 NoiseChannel。通道 ID 必须唯一,当前每种 channel_type 也只能出现一次;不能用两个同类型通道分别指定不同站点的不同速率。metadata 和 schema_version 随配置保存。
from cascaqit import NoiseChannel, NoiseModel
noise = NoiseModel("readout-only", channels=(NoiseChannel.readout(0.02, p10=0.04),))
assert noise.channel("readout").parameters["p10"] == 0.04
assert noise.channel("dephasing") is None
assert not noise.requires_trajectory
noise.validate_for(("q0",), has_digital=True, has_analog=False, is_hybrid=False)
执行方法、轨迹数、积分步数和 shots 由后端配置,不能只凭这个模型判断误差。含噪执行的状态、计数和成本解释见含噪 Hybrid 项目。
按 channel_type 查找通道,存在时返回 NoiseChannel,不存在时返回 None。查找不执行模拟。
模型包含 atom_loss 通道时返回 True。False 不意味着无需数值规划,也不等于使用理想态矢量;其他物理噪声仍可能需要密度矩阵或轨迹。
validate_for ¶
validate_for(
logical_order: tuple[str, ...],
*,
has_digital: bool,
has_analog: bool,
is_hybrid: bool,
) -> None
根据 logical_order 检查目标,并根据三个布尔参数检查程序包含所需的 Digital、Analog 或 Hybrid 结构。成功返回 None;未知目标抛出 ProgramValidationError,缺少执行前提抛出 CapabilityError。此方法不验证具体控制调度;后端仍会检查实际程序与执行方法。
从字典还原 NoiseModel。逐项还原 channels 并重新检查 ID 与通道类型的唯一性。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 NoiseModel。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。