Observable¶
from cascaqit import Observable
Observable ¶
Observable(
name: str,
terms: tuple[PauliTerm, ...],
schema_version: str = OBSERVABLE_SCHEMA_VERSION,
)
声明一个有名称的 Pauli 乘积。terms 包含作用于不同逻辑目标的 PauliTerm,每个项的基为 I、X、Y 或 Z。项必须非空,目标不能重复;name 必须是无首尾空白的非空字符串。
一个 Observable 表示算符乘积,不表示多个项的加权和。需要哈密顿量之和时使用 PauliHamiltonian。简单观测量通常通过 PauliX()、PauliZ() 或 PauliProduct 创建;直接构造所需的 PauliTerm 位于 cascaqit.observables。
声明不执行测量,也不会自动给线路追加旋转门。把多个声明放入 ObservableSet 并传给支持的后端;结果应结合 estimator_kind 阅读。由精确态算出的 X/Y 期望不能称为从计算基计数估出的结果。见批量观测量。
from cascaqit import Observable, PauliProduct
xx = PauliProduct((("q0", "X"), ("q1", "X")), name="XX")
assert xx.targets == ("q0", "q1")
assert Observable.from_json(xx.to_json()) == xx
按项的声明顺序返回目标名称元组,不自动排序。目标是否存在于所求值的状态中由求值器检查。
按同一顺序返回 PauliBasis 枚举元组,与 targets 逐项对应。
从字典还原 Observable。重建 terms 中的 PauliTerm 并重新检查空项、基和重复目标。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 Observable。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。