NMRPipe/SMILE Pipeline 详解:3D CBCANH NUS 数据处理(OLD)
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/ 下(小写):SP、ZF、FT、PS、EXT、TP 等。程序页面在 /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。
bruker 与 bruk2pipe 的关系
根据 NMRPipe 官方参考页:
bruker: Graphical interface for Bruker spectrometer format conversion; actually a script which invokes
conv.tclto produce abruk2pipeconversion 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 程序)内部逻辑:
- 读取
acqus获取各维参数(TD, SW, OBS, CAR, MODE, decim, dspfvs, grpdly 等) - 读取
nuslist获取 NUS 参数 - 将
progName设为"bruk2pipe"(conv.tcl第 3740 行) - 生成
nusExpand.tcl命令(conv.tcl第 4846–5309 行) - 将组装好的命令写入变量
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 三个字母的具体含义在官方文档中未给出解释。
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"。对直接维(DQD 模式),N = 2×T;对间接维(Complex 模式),N ≈ 2×T。
| 参数 | x (¹H) | y (¹⁵N) | z (¹³C) |
|---|---|---|---|
| N (复数点数) | 2048 | 100 | 90 |
| 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 采集模式为 States(复正交检测)。
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:沿 x 维度输出向量-ov:覆盖已有文件(通过-inPlace隐含的-nofs)
产出 90 个 test001.fid ~ test090.fid。
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 直接维读取,每个数据段是 2048 复数的时域 FID。
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 |
第一个数据点的缩放因子 |
物理原理:水峰 T₂ 长、衰减慢,在 FID 前段贡献最大。跳过前 45% 的数据点 = 压制水峰而保留蛋白质信号。
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. -auto Round Final Size to Power of 2.
-auto:自动圆整到 2 的幂。将 2048 点扩展到 4096(-zf 默认扩 1 倍),提高数字分辨率(FFT 插值)。
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 维组装。产 366 个 1D 谱(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 是一个迭代阈值重建算法。每次迭代:
- 在残差谱中找最大峰
- 如果 Max/Noise > nSigma,用洛伦兹线形拟合
- 将拟合信号的
scaling倍加入重建谱,从残差中扣除 - 对重建中间态施加时域变迹(抑制伪峰)
- 重复直到 Max/Noise < 阈值
关键参数
| 参数 | 值 | 来源/含义 |
|---|---|---|
-sample nuslist |
NUS 采样坐标文件 | |
-sampleCount 675 |
有效采样点数 | |
-nSigma 4.5 |
默认 5.0 | 信噪比阈值 |
-thresh 0.95 |
默认 0.80 | 信号检测置信度阈值 |
-scaling 0.6 |
默认自动 | 信号扣除比例(0.6 = 每次只减 60%) |
-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 GitHub 和 POKY 官方网站:
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"

浙公网安备 33010602011771号