跳转至

ObservableSet

from cascaqit import ObservableSet

ObservableSet

ObservableSet(
    observables: Iterable[Observable],
    *,
    schema_version: str = OBSERVABLE_SCHEMA_VERSION,
)

将一组 Observable 保存为有序集合。输入 observables 可为可迭代对象,构造时保存为元组;必须至少一个,且每个 name 唯一。类型错误抛出 TypeError,空集合或重名抛出 ValueError。

支持遍历、len()、整数索引和切片。整数索引返回 Observable,切片返回元组;这些操作不会求值。schema_version 标记序列化格式。

from cascaqit import ObservableSet, PauliX, PauliZZ

requested = ObservableSet([PauliX("q0", name="X0"), PauliZZ("q0", "q1", name="ZZ")])
assert requested.names == ("X0", "ZZ")
assert requested[0].name == "X0"
assert len(requested[:1]) == 1

把它作为 observables= 传给 LocalBackend.run() 可从同一次演化的结果读取多个观测量。它不保证把任意不对易观测量合并为一次物理测量。完整执行与方差说明见批量观测量。

names

names: tuple[str, ...]

按声明顺序返回名称元组。后端返回的观测量批次应与这一顺序一致。

by_name

by_name() -> dict[str, Observable]

返回名称到 Observable 的新字典,供按名称查找。字典只保存声明,不包含期望值。

from_dict

from_dict(data: Mapping[str, Any]) -> ObservableSet

从字典还原 ObservableSet。逐项恢复 observables,保留输入顺序并重新检查名称唯一性。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。

from_json

from_json(text: str) -> ObservableSet

解析 JSON 对象并调用 from_dict(),返回 ObservableSet。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。

to_dict

to_dict() -> dict[str, Any]

返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。

to_json

to_json(*, indent: int | None = None) -> str

返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。

stable_hash

stable_hash() -> str

返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。