Source evidence 与序列化¶
把 MolOP 的文件级 metadata、frame 结果和 source evidence 导出给数据库或审计系统。普通分析使用
AutoParser、to_summary_df 或 frame 字段;需要跨系统保存解析事实时再使用本页接口。
导出 payload¶
Python
from molop import AutoParser
chem_file = AutoParser(
"water_mp2.out",
capture_source_evidence=True,
release_file_content=True,
n_jobs=1,
)[0]
file_payload = chem_file.to_unitless_dump_with_unit_keys(exclude_none=True)
frame_payloads = [
frame.to_unitless_dump_with_unit_keys(exclude_none=True)
for frame in chem_file
]
print(file_payload["schema_version"], file_payload["source_format"])
print(len(frame_payloads), frame_payloads[0]["file_frame_index"])
文件 payload 和 frame payload 分开保存。文件 payload 负责来源与文件级 metadata;frame payload 负责坐标、拓扑、科学结果和 frame 级 source locator。
数值与单位¶
to_unitless_dump_with_unit_keys() 将 Pint quantity 转为 magnitude,并把规范单位写入 key,例如
Energy.total_energy.hartree 或 coords (angstrom)。数组默认序列化为 list;数据库使用数值
sidecar 时传入 array_mode="ndarray"。
| 对象 | 用途 | 稳定字段 |
|---|---|---|
| 文件 payload | 文件 identity、来源、parser provenance | schema_version、source_format、parser_provenance |
| frame payload | 结构和计算结果 | file_frame_index、source_span、parse_presence |
| source evidence | 回溯原文位置和摘要 | source_segments、source_block_sha256 |
索引与边界¶
- 用
file_frame_index表示源文件中的稳定 frame 顺序。 frame_id属于当前保留的 frame 集合;筛选或重排后不应作为全局 identity。capture_source_evidence=True才会请求额外的 source locator 和 parser provenance。- 捕获 source evidence 不会读取
frame.rdmol,也不会重建分子图;拓扑保持惰性,直到分子图相关操作 显式请求时才会重建。 - MolOP 提供解析事实,不负责数据库 identity、payload 校验、数组编码、artifact 校验或 admission/QC。
详细的 source span 和 parser lifecycle 规则见完整 Parser 契约。