AIGC标识 NMRPipe/SMILE Pipeline 全流程详解

NMRPipe/SMILE Pipeline 全流程详解

数据:HP1aP3C 蛋白,Bruker 谱仪,308K,3D CBCANH,30% NUS 采样
维度:¹H(直接维) × ¹⁵N(间接维1) × ¹³C(间接维2)
脚本来源:900.zip 内师兄调优后的工作脚本


参考文献来源

本文档编写时参考了以下材料(即 RefLinks.md 中的链接)。每个命令的参数定义均可在这些来源中查证:

# 链接 用途
1 NMRPipe Big Reference Page Frank Delaglio 本人维护的权威参考。处理函数的独立页面在 /ref/nmrpipe/ 下(小写):SPZFFTPSEXTTP 等。程序页面在 /ref/prog/ 下:bruk2pipe
2 NMRPipe Install Guide 安装依赖和步骤
3 SMILE 官方页面 SMILE 算法原理(Jinfa Ying / Ad Bax 组)
4 SMILE Manual PDF SMILE 详细手册(2015 年 11 月版)。注意此手册较老,部分参数默认值已变化。例如手册中 -nSigma 默认 6,当前 SMILE 3.0 中默认 5.0;手册中参数名为 -subConst,当前版本已改为 -scaling
5 POKY GitHub POKY:下游谱图分析和指认工具

环境

  • WSL2 + WSLg(Ubuntu 24.04 x86_64)
  • NMRPipe v13.0 Rev 2026.072.12.03(~/nmr/
  • SMILE 3.0 Rev 2025.333.21.55(作为 NMRPipe 插件安装)
  • 所有 .com 脚本必须在 tcsh 下运行:
tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; source <脚本>.com"

⚠️ bash 的 source 无法解析 csh 语法(setenv),必须使用 tcsh -c


brukerbruk2pipe 的关系

根据 NMRPipe 官方参考页:

bruker: Graphical interface for Bruker spectrometer format conversion; actually a script which invokes conv.tcl to produce a bruk2pipe conversion script.ref/prog/bruker

bruk2pipe: Convert Bruker time-domain data to NMRPipe-format data; see also the bruker command for creating format conversion scripts.ref/prog/bruk2pipe

bruker 脚本调用的 conv.tcl(5399 行 TCL/TK 程序)内部逻辑:

  1. 读取 acqus 获取各维参数(TD, SW, OBS, CAR, MODE, decim, dspfvs, grpdly 等)
  2. 读取 nuslist 获取 NUS 参数
  3. progName 设为 "bruk2pipe"conv.tcl 第 3740 行)
  4. 生成 nusExpand.tcl 命令(conv.tcl 第 4846–5309 行)
  5. 将组装好的命令写入变量 adjScript 并执行

fid.com 就是 conv.tcl 在 GUI 中自动生成的 adjScript 内容,被人保存为文件。两者调用的是完全相同的底层程序bruk2pipe + nusExpand.tcl)。


Pipeline 全景

Bruker 原始数据                  NMRPipe 格式               处理结果
┌──────────┐   fid.com          ┌──────────┐  smile1.com   ┌──────────┐
│ ser      │ ─── nusExpand ──→  │ fid/     │ ─── 直接维FT → │ ft1/     │
│ acqus    │     bruk2pipe      │ mask/    │               │ 366个38KB│
│ nuslist  │                    │ 90个     │               └────┬─────┘
└──────────┘                    └──────────┘          smile2.com │ SMILE
                                                      ┌──────────┘
                                    ft1/               │    smile3.com    ft/
                                    rc%04d.ft1 ←──────┘ ─── 间接维FT → test%04d.ft3
                                    366个81KB                         256个236KB
                                                                         │
                                                    proj3D.tcl ─────────┘
                                                    HN/13C  HN/15N  13C/15N
                                                    (.dat 投影文件)
步骤 脚本 耗时 产出
1 fid.com ~30s fid/ (90) + mask/ (90)
2 smile1.com <1s ft1/test%04d.ft1 (366)
3 smile2.com 15s ft1/rc%04d.ft1 (366)
4 smile3.com <1s ft/test%04d.ft3 (256) + 投影 (3)

Step 1: fid.com — Bruker 原始数据 → NMRPipe 格式

1a. NUS 展开

nusExpand.tcl -mode bruker -sampleCount 675 -avg -off 0 \
 -in ./ser -out ./ser_full -sample ./nuslist

根据 nusExpand.tcl -help

参数 含义
-mode bruker 输入为 Bruker 原始格式
-sampleCount 675 NUS 实际采样点数
-avg 如有重复增量取平均
-off 0 采样坐标偏移量为 0(nuslist 坐标值与 NMRPipe 索引体系一致)
-in ./ser 稀疏采样的原始 FID 信号(22MB)
-out ./ser_full 补零至全尺寸的虚拟全采样数据(74MB ≈ 3.33×)
-sample ./nuslist NUS 采样坐标列表

补零验证ser_full 中未采样位置(如 Z=44, Y=49)的 32768 字节 md5 与纯零完全相同,确认补的是零。

1b. Bruker → NMRPipe 格式转换

bruk2pipe -verb -in ./ser_full \
  -bad 0.0 -ext -aswap -AMX -decim 2376 -dspfvs 20 -grpdly 67.9872589111328 \
  -xN       2048  -yN        100  -zN         90 \
  -xT       1024  -yT         50  -zT         45 \
  -xMODE     DQD  -yMODE Complex  -zMODE Complex \
  -xSW   8417.509  -ySW   1337.972  -zSW   8756.567 \
  -xOBS   600.053  -yOBS    60.810  -zOBS   150.889 \
  -xCAR     4.677  -yCAR   118.976  -zCAR    44.651 \
  -xLAB        HN  -yLAB       15N  -zLAB       13C \
  -ndim         3  -aq2D   Complex

-AMX 的含义

根据 bruk2pipe -help

-AMX     Input is AMX/DMX Format (Default).
-DMX     Input is DMX Format, Adjust for Digital Oversampling.
-AM      Input is 3-Byte Bruker AM Data.

When used on digital oversampling data, the -AMX flag will cause
oversampling correction to be applied during processing instead of
during conversion. This often gives better baselines.

-AMX 指定了 Bruker 原始数据的二进制格式。AMX 是 Bruker 自 1980–90 年代 AMX 系列谱仪延续至今的数据格式。其行为:不在转换时做数字过采样校正,而是把校正推迟到后续处理管道(ZF/FT/PS 阶段)。作者明确推荐的实践——比 -DMX(转换时就截断)基线更好。

A/M/X 三个字母的具体含义在官方文档中未给出解释。

-ext-AMX 配合

⚠️ 已修正-ext 官方定义为 "Extract Valid Points Only",默认 -noext实验验证:在 -AMX 模式下 -ext-noext 产出完全一致(73,730,048 bytes,md5 相同)。-ext 仅在 -DMX 模式下有意义(砍掉滤波振铃段,隐含 ~70 点缩减)。fid.com 中的 -extconv.tcl 模板自动生成的,在此无实际效果。

Bruker 数字滤波参数

参数 来源 含义
-decim 2376 acqus DECIM 数字过采样抽取因子
-dspfvs 20 acqus DSPFVS DSP 固件版本(10-13 为旧版,20-23 为新版)
-grpdly 67.987... acqus GRPDLY 数字滤波群延迟(点数,精确到 13 位小数)

各维参数

根据 bruk2pipe -help-xN 是 "Actual Size in File Pts Real + Imag"(实部+虚部分开计数),-xT 是 "Current Time Domain Size Pts Real or Imag"。

⚠️ 注意-xN 2048 表示 2048 个"实+虚"值 = 1024 个复数。NMRPipe 内部头和后续处理按复数值(1024)计算。不要与 NMRPipe 头中的 DATA SIZE(显示的是复数值)混淆。

参数 x (¹H) y (¹⁵N) z (¹³C)
N (bruk2pipe "Pts Real+Imag") 2048 100 90
对应复数值 1024 50 45
T (实数时域点数) 1024 50 45
MODE DQD Complex Complex
SW (Hz) 8417.5 1338.0 8756.6
OBS (MHz) 600.05 60.81 150.89
CAR (ppm) 4.677 118.976 44.651
LAB HN 15N 13C

-aq2D Complex:2D 采集模式在 Bruker 端为 States-TPPI,NMRPipe 中以 Complex 表示(bruk2pipe -help 中:0=States-TPPI,States-TPPI-N)。间接维 -yMODE Complex -zMODE Complex 同理。

1c. 幅度校正

| nmrPipe -fn MULT -c 6.51042e-01

根据 nmrPipe -fn MULT -help

MULT: Multiply Data by a Constant. -c cC [1.0] Constant for Both.

乘以 0.651042 — 这是 Bruker 数字滤波引入的幅度缩放因子的校正值。

1d. 输出 FID 文件

| pipe2xyz -x -out ./fid/test%03d.fid -ov

根据 pipe2xyz -help

-x — Output Vectors to X-Axis XYZA (Default). 数据向量沿 X 轴,按 Z 维分片输出。输出文件数 = z 维大小。
-z — Output Vectors to Z-Axis YZXA. 数据向量沿 Z 轴,按 X 维分片输出。输出文件数 = x 维大小。

-ov:通过 -inPlace 隐含的 -nofs,覆盖已有文件。

产出 90 个 test001.fid ~ test090.fid(zN=90)。

1e. 生成 NUS Mask

xyz2pipe -in ./fid/test%03d.fid -noWr \
| nusExpand.tcl -mask -noexpand -mode pipe -sampleCount 675 -avg -off 0 \
  -in stdin -out ./mask/test%03d.fid -sample ./nuslist

根据 nusExpand.tcl -help

  • -mask:输出掩码而非数据(1=采样点, 0=补零点)
  • -noexpand:输入已是展开后的数据
  • -mode pipe:输入为 NMRPipe 管道格式

SMILE 重建时用这些 mask 实施数据一致性约束:采样点值必须与原始观测值一致。


Step 2: smile1.com — 直接维傅里叶变换

xyz2pipe -in ./fid/test%03d.fid -x

根据 xyz2pipe -help-x = "Output X-Vectors XYZA"。沿 ¹H 直接维读取,每个数据段是 1024 复数的时域 FID(NMRPipe 头中 x DATA SIZE=1024)。

2a. 窗函数(变迹)

| nmrPipe -fn SP -off 0.45 -end 0.98 -pow 2 -c 0.5

根据 nmrPipe -fn SP -help

SP: Adjustable Sine Window. -off offset [0.0] Sine Start*PI. -end end [1.0] Sine End*PI. -pow exp [1.0] Sine Exponent. -c fScale [1] Point 1 Scale.

参数 含义
-off 0.45 0.45×π 正弦窗起始相位(跳过 FID 前 45% 数据点)
-end 0.98 0.98×π 正弦窗结束相位(丢弃末尾 2%)
-pow 2 指数 2 平方正弦窗
-c 0.5 第一个数据点的缩放因子

SP 是可调正弦窗(变迹函数,apodization)。变迹在时域对 FID 施加权重,目的是平衡灵敏度分辨率——压低 FID 前段(信号强但衰减快的信息少)换分辨率,压低后段(纯噪声)换灵敏度。-off 0.45 使窗在 FID 前 45% 处才上升,-end 0.98 丢弃末尾 2% 噪声。

2b. 零填充

| nmrPipe -fn ZF -zf -auto

根据 nmrPipe -fn ZF -help

ZF: Extend By Zero Filling. -zf zfCnt [1] Number of Times to Double the Size by Zero Filling. -auto — Round Final Size to Power of 2.

实验事实:

  • ZF 确实将时域点数翻倍(DATA SIZE: 1024 cp → 2048 cp)
  • FT 保持 2048;PS -di 后变回 1024
  • 最终 EXT 输出:有 ZF 和无 ZF 均为 366 点,但 md5 不同

即 ZF 改变了中间各步的数据点数,但经 PS -di 和 EXT 后最终输出点数相同。ZF 提升了频率域的插值精度(数据值不同),但最终维度不因 ZF 而变。这一行为由 PS -di 和 EXT -sw 共同决定,具体机理参见 NMRPipe 参考页的 EXT -sw 说明(-sw 会更新 NDAPOD 等头参数)。

2c. 傅里叶变换

| nmrPipe -fn FT

根据 nmrPipe -fn FT -help

FT: Complex Fourier Transform. -auto Choose Mode Automatically.

将时域 FID 转为频域谱。

2d. 相位校正

| nmrPipe -fn PS -p0 4 -p1 0 -di

根据 nmrPipe -fn PS -help

PS: Phase Correction. -p0 p0Deg [0.0] Zero Order Phase, Degrees. -p1 p1Deg [0.0] First Order Phase, Degrees.

公式:p0 + p1*f(零阶常数 + 一阶频率线性)。

-di:仅保留实部。

2e. 区域提取

| nmrPipe -fn EXT -x1 11ppm -xn 6ppm -sw -round 2

根据 nmrPipe -fn EXT -help

EXT: Extract Region. -x1 xFirst [1] X Extract Range Start. -xn xLast [XSIZE] X Extract Range End. -sw Adjust Sweep Width and ppm Calibration. -round n [1] Round Size to Nearest N.

只保留 6–11 ppm(¹H 蛋白质酰胺质子区域)。

2f. 输出 FT1 文件

| pipe2xyz -out ft1/test%04d.ft1 -z

-z:数据向量沿 Z 轴,按 X 维分片输出。处理后 x 维大小 = 366 → 366 个文件(38KB/个)。


Step 3: smile2.com — SMILE NUS 重建

| nmrPipe -fn SMILE -nDim 3 -sample nuslist -nThread 32 \
           -sampleCount 675 -nSigma 4.5 -off 0 0 -report 1 -scaling 0.6 \
           -xApod SP -xQ1 0.45 -xQ2 0.95 -xQ3 1 \
           -yApod SP -yQ1 0.45 -yQ2 0.95 -yQ3 1 \
           -xP0 0 -xP1 0 -xNeg -xAlt \
           -yP0 0 -yP1 0 -yAlt \
           -xCT 0 -thresh 0.95

根据 SMILE 官方页面(spin.niddk.nih.gov/bax/software/SMILE/),SMILE 论文(Ying et al., J. Biomol. NMR, 2017),以及 nusPipe -fn SMILE -help

算法原理

SMILE 是一个迭代阈值重建算法。每次迭代:

  1. 在残差谱中找最大峰
  2. 如果 Max/Noise > nSigma,用洛伦兹线形拟合
  3. 将拟合信号的 scaling 倍加入重建谱,从残差中扣除
  4. 对重建中间态施加时域变迹(抑制伪峰)
  5. 重复直到 Max/Noise < 阈值

关键参数

参数 来源/含义
-sample nuslist NUS 采样坐标文件
-sampleCount 675 有效采样点数
-nSigma 4.5 默认 5.0;SMILE 手册旧版默认 6 信噪比阈值:>4.5σ 被认为是信号峰
-thresh 0.95 默认 0.80 信号检测置信度阈值
-scaling 0.6 默认 Auto 信号扣除比例。只扣 60%,防止过减(旧版 SMILE 手册中参数名为 -subConst
-report 1 默认 0 输出报告级别(1=信息输出到 stderr + smile.log)
-nThread 32 默认 CPU/2 线程数
-off 0 0 x/y 间接维信号位置偏移
-xApod SP 默认 SP x 维变迹函数类型(正弦窗)
-xQ1 0.45 默认 0.50 SP 窗参数 1
-xQ2 0.95 默认 0.98 SP 窗参数 2
-xQ3 1 默认 1.00 SP 窗指数
-xCT 0 默认 0 常数时间采集点数(0 = 非 CT 实验)
-xNeg -xAlt FT 前虚部取反 + 符号交替

SMILE 参考:J. Ying, F. Delaglio, D.A. Torchia, A. Bax. Sparse Multidimensional Iterative Lineshape-Enhanced (SMILE) Reconstruction of Both Non-Uniformly Sampled and Conventional NMR Data. J. Biomol. NMR 68, 101–118 (2017).

实际收敛

迭代  1: Max/Noise = 110.74
迭代 10: Max/Noise =  11.36
迭代 20: Max/Noise =   3.41
迭代 31: Max/Noise =   2.06  → 停止

31 迭代,15 秒。输出 366 个重建 FT1(81KB,SMILE 默认扩展间接维 50%)。


Step 4: smile3.com — 间接维 FT → 3D 谱

两个间接维还是时域,需要依次 FT。因为 NMRPipe 只能对当前最后两个维度做 FT,所以需要 TP 来交换轴。

间接维1(¹⁵N)

| nmrPipe -fn ZF -zf 1 -auto
| nmrPipe -fn FT -alt -neg
| nmrPipe -fn PS -p0 -6 -p1 0 -di

根据 nmrPipe -fn FT -help

  • -alt:使用符号交替(Use Sign Alternation)
  • -neg:虚部取反(Negate Imaginaries)

轴交换

| nmrPipe -fn TP

根据 nmrPipe -fn TP -help

TP: 2D Plane Transpose. -auto Choose Mode Automatically (Default).

交换 y 和 z 轴,为下一维 FT 做准备。

间接维2(¹³C)

| nmrPipe -fn ZF -zf 1 -auto
| nmrPipe -fn FT -alt
| nmrPipe -fn PS -p0 -3.7 -p1 13 -di

恢复轴顺序

| nmrPipe -fn TP
| nmrPipe -fn ZTP

根据 nmrPipe -fn ZTP -help

ZTP: 3D Matrix Transpose. XYZ2ZYX.

恢复为原始轴顺序 (x, y, z)。

输出 3D 谱

| pipe2xyz -out ft/test%04d.ft3 -x

产出 256 个 2D 平面(236KB/个)。

3D 投影

proj3D.tcl -in ft/test%04d.ft3

Skyline 投影:取每个 (i,j) 位置沿第三维的最大值,产生 2D 投影:

投影文件 维度
HN.13C.dat ¹H × ¹³C
HN.15N.dat ¹H × ¹⁵N(HSQC 型)
13C.15N.dat ¹³C × ¹⁵N

3D 谱元数据

FILE: ft/test0001.ft3  DIM: 3  QUAD: Real  2DMODE: States

        X-Axis(HN)   Y-Axis(13C)   Z-Axis(15N)
SIZE:          366          256          256
SW Hz:    3008.602     8756.567     1337.972
OBS MHz:  600.053      150.889       60.810

POKY 在流程中的角色

根据 POKY GitHubPOKY 官方网站

POKY is a next generation software suite for the integrated and automated NMR data analysis and structure calculation. Developed by the Woonghee Lee's POKY Group at the University of Colorado Denver.

谱系:UCSF-SPARKY (1990s) → NMRFAM-SPARKY (2010s) → POKY (2021)

学术引用:Lee et al., Bioinformatics 37(18):3041–3042 (2021)。

POKY 是 NMRPipe/SMILE 流水线的下游工具,提供 GUI 集成环境:

NMRPipe(处理) → SMILE(重建) → POKY(可视化/分析)
                                  ├─ 峰识别 (APES, iPick)
                                  ├─ 共振指认 (PINE-SPARKY.2)
                                  ├─ 结构计算 (PONDEROSA-C/S, XPLOR-NIH)
                                  ├─ AI 结构预测 (AlphaFold2/3)
                                  ├─ 动力学分析 (R₁/R₂/NOE, ModelFree)
                                  └─ 计算机辅助药物设计

POKY 内置 NMRPIPE2UCSF 转换工具,可直接打开 NMRPipe 处理的 .ucf/.ucsf 文件。师兄在 900.zip 中包含了 UCSF 格式的谱图(20250620_HP1aP3C_CBCANH_308K_11.ucsf,~98MB)正是供 POKY 打开分析之用。


运行方式总结

所有脚本必须在 tcsh 中运行,并先 source NMRPipe 初始化脚本:

tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; source fid.com"
tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; source smile1.com"
tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; source smile2.com"
tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; source smile3.com"

查看谱图:

tcsh -c "source ~/nmr/com/nmrInit.linux239_64.com; nmrDraw HN.13C.dat"
posted @ 2026-07-27 10:13  acahsteven  阅读(9)  评论(0)    收藏  举报