复现记录先固定数据,再固定计算条件
能否复现要由保存的输入、环境和核对记录共同证明。
读图时保留这项条件:示例跑通、完整模型推理和训练复现属于不同验证范围。
E.1.1 先按任务选路线,再选择软件
一套能打开谱图的软件环境,不等于完成了处理、模拟、候选生成和评价四项任务。处理从 FID 与采集参数得到谱;模拟从指定自旋参数得到响应;CASE 将分子式与连接约束转成候选;AI 则依具体模型进行预测、检索或生成。复现前先写出输入、输出及成功标准,避免把一个步骤的成功误称为整个结构解析流程已通过。
展开说明与推导
轻量路线适合先检验数据与方法。本书已有小型可下载练习,读者可以在固定环境中处理一份真实存档 FID、重算教学自旋模型,或用标准库检查枚举与评价算术。进阶路线再加入复杂脉冲、自旋动力学、完整 CASE 或大规模模型。是否采用进阶工具应由待解决的问题决定,并为依赖、资源与验证留出记录。
| 任务 | 轻量起点 | 进阶工具与条件 | 本轮实际状态 |
|---|---|---|---|
| 处理与人工归属 | nmrglue 练习;浏览器可查 NMRium 文档 | 多维数据、厂商版本与保存格式逐项核验 | nmrglue 处理指定 BMRB FID;未运行 NMRium |
| 自旋与线形模拟 | nmrsim 两自旋及限定交换例 | Spinach 等复杂动力学;依固定发行版核对 MATLAB 依赖 | 指定 nmrsim 模型已运行;未安装或运行 Spinach |
| CASE 与约束枚举 | 本书有限候选脚本 | Sherlock 等完整服务、知识库与约束接口 | 教学脚本已运行;Sherlock 仅核查来源与任务 |
| AI 结构解析与评价 | 先审输入表示与基准划分,再算演示指标 | NMR-Solver 等代码、权重、检索库;核对资源与先验 | 模型文献与公开入口已核对;没有完整训练或推理复现 |
展开说明与推导
NMRium 官方文档说明托管应用可用公共数据测试及非商业使用;这与开源组件仓库的 MIT 许可是不同层面。Spinach 当前开发仓库列出的 MATLAB 与工具箱要求,也不能直接套给所有历史版本。读者应固定实际采用的发行版,再读该版本的安装说明,而不是把不同年代的依赖拼成一份清单。
E.1.2 固定环境:记录实际版本,而非“最新版”
本书指定 Python 练习的实际核验环境为 Windows、Python 3.12.10,主要依赖为 nmrglue 0.12、nmrsim 0.7.1、NumPy 2.4.6、SciPy 1.18.1 与 Matplotlib 3.11.2。下载包中的 requirements-lock.txt 保存共享教学环境的完整依赖。这里记录的是实际运行版本,不能据此推断其他操作系统或所有库功能都兼容。
展开说明与推导
网页文档标签可能与安装发行版不同。例如核查时 nmrglue 的 latest 教程页标为 0.9-dev,而本书实际运行的是 0.12;nmrsim 的部分 latest 文档标为 0.6.0,实际运行版本为 0.7.1。复现时以安装记录、包版本和使用的接口为准,同时保存相应文档入口,不能用网页标题替代环境记录。
在独立虚拟环境中按练习包说明安装固定依赖,先运行该包的小型例子。成功后再扩展数据维度或模型复杂度。若接口或依赖不匹配,保留实际报错与版本,修正环境后重新核验,不把失败输出当成缺峰数据。
展开说明与推导
安装记录需要包括解释器路径或清楚的启动方式,以免命令调用了另一套 Python。依赖锁定能提高重复性,但不能保证跨平台安装一定成功;编译依赖、数学库与硬件也可能改变运行条件。数值比较应依据任务允许的容差,例如自旋跃迁频率误差,而不是要求每个平台输出字节完全一样。
随机算法还应记录种子、数据顺序和随机源;GPU 模型需要保留框架及驱动等相关版本。固定随机种子并不能无条件保证所有后端逐位相同。若评价依赖多次随机划分或初始化,应按预先规定的重复方案报告分布,不挑选最好的单次结果作为整体性能。
E.1.3 数据格式:保留原始量和轴定义
原始 FID、处理谱、峰表、指认表和结构文件不是可互相替代的数据。FID 与采集参数使读者能够重新处理;处理谱保存既定处理后的响应;峰表只保存选取的峰信息;指认表把响应连接到原子;结构文件表达连接与立体标签。一张图片即使标注很完整,也不能恢复未保存的复数 FID。
| 层级或格式 | 核心信息 | 不能默认包含的内容 |
|---|---|---|
| 厂商原始目录 | FID、采集参数、脉冲及必要读取信息 | 单独一个二进制文件不一定足够解释轴与点数 |
| JCAMP-DX 或处理谱数组 | 数值谱与格式规定的参数 | 是否含原始数据、复通道和完整参数需逐文件核对 |
| 峰表 CSV / JSON | 坐标、强度或面积、选峰及单位 | 峰间基线、未选峰与全部原始线形 |
| NMReDATA 记录 | 结构、位移、J、指认及相关对应 | 格式有效不保证结构与观测正确 |
| nmrML | 原始或谱数据与元数据的标准化表达 | 转换过程可能有限制,不负责自动求结构 |
| 结构及候选文件 | 原子编号、键及所声明立体信息 | SMILES 存在不表示已有完整实验指认 |
展开说明与推导
每个数组都需要轴方向、单位、载频、谱宽、点数与复数编码的定义。二维数据还需注明两轴核种和采样方式;非均匀采样要保留采样表。一次转置或反向排列可能仍画出合理图像,却改变坐标含义。格式转换后,应拿若干已知参数与原图核对,不能只检查文件能否打开。
原始目录应按只读副本保存,后续处理输出另建目录。若文件转换改变了精度、参数字段或数据排列,应记录转换软件和损失信息。标准格式可以改善交换,但通用字典有时只保留基础参数,不能代替原厂商文件的所有细节。关键元数据缺失时应明确写出缺项。
E.1.4 一份真实 FID 的可复现处理记录
处理路线可从 乙醇 FID 练习包开始。数据是 BMRB bmse000297 实验 1 的存档:100 mM 乙醇,D₂O,DSS 参考,298 K,pH 7.4,Bruker DMX 400 MHz。包中保留来源、条目文件及参数,不把它标成教学模拟谱。运行前阅读 README 与 provenance.json,确认当前文件对应这份记录。
展开说明与推导
本书实际处理顺序为读取 Bruker 数据、移除数字滤波延迟、施加 1 Hz 指数窗、零填充到 32768、FFT、ACME 自动相位,再按采集参数构造 ppm 轴。读取的 16384 个复数点在数字滤波移除后为 16310。相位参数与输入散列在报告中保存;本书没有为了吻合指认表而强行移动轴。
使用 1.00—1.35 与 3.45—3.85 ppm 两个积分窗口及记录的局部基线估计,本地面积比约为 1.47865;条目已有处理谱在同区间的面积比约为 1.49028。二者都接近结构氢数比 3∶2,但来自同一份 FID,不能当成两次独立结构验证;也不能由此宣布真实 qNMR 方法已经验证。
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-lock.txt
.\.venv\Scripts\python.exe process_ethanol.py --input data --output results
以上为 Windows PowerShell 示例,在练习包解压目录中使用,明确调用新环境中的解释器;其他平台采用其虚拟环境对应的解释器路径。复现后检查点数、处理顺序、轴和报告,而不只是谱的外观。若面积比变化,应先比较窗、相位、基线、区间与软件版本;一个参数变化可能合理,却需要形成新的处理版本及说明。
E.1.5 模拟、CASE 与 AI 的验证边界
AB 自旋练习固定两个自旋二分之一、J=7 Hz 和四种频率差,实际将 nmrsim 的跃迁频率及强度与独立解析式对账。双位点交换练习使用等占比、相同内禀弛豫、无 J 的限定模型,比较解析式、矩阵及适用的软件函数。成功范围是这些具体案例,不能写成整个模拟库已被验证。
展开说明与推导
CASE 枚举练习展示有限候选与约束的排除过程,适合检查证据逻辑。完整 Sherlock 流程涉及实际服务、知识库与更复杂约束,本轮没有执行它。用于立体候选比较的 DP4-AI 也有外部计算与误差模型条件;概率必须依候选集解释,不能替换成全结构空间的确定性。
AI 路线应先读 9.9 节的任务与发表状态核查,再依据公开代码固定版本、权重、数据表示、分子式及其他先验。NMR-Solver 的大规模检索路线需要相应数据库资源;本轮没有下载完整大型库,也没有声称在本地复现论文排名。算出教学 Top-k 指标只检验评价算术,没有执行论文模型。
不同阶段可采用不同成功标准:读取阶段检查数据形状与参数;模拟阶段检查解析极限与数值响应;CASE 检查候选覆盖和约束;AI 检查独立测试划分、失败样本与校准。记录应明确“已运行”“仅核查文档”“依赖尚缺”或“结果不符”,让后续读者能准确判断目前进度。
代码之外可能还需要权重、数据库、访问许可或外部服务。README 中的安装命令也不能证明所有依赖已满足。只有固定输入、完整运行并检查输出后,才报告相应范围的运行成功。
E.1.6 分别记录代码许可、数据许可和服务条款
代码许可证规定代码如何使用与再分发,数据许可证规定数据的复用条件,托管服务条款规定在线应用的使用条件。三者可能由不同主体制定。nmrglue 的代码采用 BSD-3-Clause,nmrsim 与 NMRium 组件仓库采用 MIT;这些许可不能自动覆盖其示例数据、外部谱库或托管服务。
展开说明与推导
BMRB 的任务与数据政策说明公开数据的传播方式;本书保留提交者、条目 DOI 与来源,没有把该数据改标为 CC0。乙醇与 AB 练习中新写的脚本和说明采用教材所声明的 CC BY-NC-SA 4.0;综合项目起步包则单独标出教学数据的 CC0 与脚本的 MIT。使用者应读取每个包的说明,不能由共同文件扩展名推断统一许可。
将材料上传归档平台前,需要核对数据权利、作者、引用和记录许可。nmrXiv 的发布文档要求填写许可等元数据;平台代码的许可与各记录的许可分开判断。本页只提供复现与归档路线,没有替读者上传或发布样品。若课堂要重新分发第三方谱图,应按该记录的具体许可办理。
E.1.7 归档清单与一次可核验的交付
最小归档应包含原始数据与来源、样品和采集条件、处理脚本与参数、环境版本、结构及原子编号、峰与相关表、结果报告、许可和引用。随机过程增加种子与划分;模型增加权重版本及检索库标识。文件名不必采用某一种风格,但必须能把输入、处理与结论稳定地连起来。
展开说明与推导
另一位读者能够取得同一输入、识别同一方法与环境、产生可比较的输出,并看清尚未解决的问题。归档既保存成功结果,也保存影响结论的限制和失败记录。
E.1.8 习题与解答
习题 E.1-1 同一 FID 的两种处理
乙醇 FID 的本地处理比为 1.47865,原有处理谱比为 1.49028。能否称为两次独立实验确认 3∶2?
解答不能。它们来自同一采集,只是不同处理。可比较处理敏感性,但独立实验需要独立采集及相应条件记录;qNMR 还需验证定量响应。
习题 E.1-2 代码与服务
组件仓库是 MIT,是否意味着托管服务和任意上传谱数据均可按 MIT 使用?
解答否。MIT 对应其代码范围,托管服务另有条款,数据另有许可或权利条件。应分别核对三个对象,保留出处及访问版本。
习题 E.1-3 散列与科学有效性
七个包的 SHA-256 全部匹配,是否可宣布 NMR-Solver 在本地通过复现?
解答不可。散列只核对指定包的字节,包中的演示指标没有运行 NMR-Solver。模型复现需要固定权重、完整依赖、实际数据及推理输出,再按合适基准评价。
E.1.9 关键术语
- 固定版本 version pinning
- 明确实际使用的发行版或提交。
- 锁定依赖 dependency lock
- 保存实际依赖版本以提高环境重复性。
- 原始数据 raw data
- 可追溯至采集的观测及必要参数。
- 数据层级 data level
- FID、处理谱、峰表等不同信息对象。
- 清单 manifest
- 连接文件、版本和方法的归档索引。
- 散列 checksum
- 核对文件字节是否一致的摘要。
- 服务条款 service terms
- 在线应用的使用条件,与代码许可分开。
- 复现范围 reproduction scope
- 实际执行并检查过的任务及条件。
E.1.10 参考文献与官方资源
- Helmus JJ, Jaroniec CP. nmrglue: An open source Python package for the analysis of multidimensional NMR data. J Biomol NMR, 2013, 55:355–367. 论文;官方教程;代码与许可。
- nmrsim contributors. nmrsim. 官方代码;文档。本书运行版本与范围见正文。
- cheminfo / NMRium contributors. NMRium. 官方使用文档;组件仓库。核对日期 2026-10-11,托管应用条款另查。
- Kuprov I and Spinach contributors. Spinach. 官方仓库及版本依赖。开发分支要求与历史发行版不混用。
- NFDI4Chem / Sherlock contributors. Sherlock. 官方 CASE 服务代码;2023 年原始论文。
- Pupier M, Nuzillard JM, Wist J, et al. NMReDATA, a standard to report the NMR assignment and parameters of organic compounds. Magn Reson Chem, 2018, 56:703–715. 指认标准;nmrML 项目:原始与谱数据格式仓库。
- BMRB. Ethanol, bmse000297. 数据条目 DOI;任务声明;代谢组学数据政策。
- NFDI4Chem / nmrXiv. Publication Deposition. 官方归档与许可记录说明,访问核对 2026-10-11。
- Jin Y, Wang JJ, Xu F, et al. NMR-Solver: automated structure elucidation via large-scale spectral matching and physics-guided fragment optimization. Nat Commun, 2026, 17:4740. 原始研究;代码与资产要求。