第14章 软件与方法选择

第三部分 · 第14章

第14章 软件实现、交叉检查与方法选择

第三方包的能力边界、最小案例和可重复计算记录

软件在电子—电子距离测定流程中的位置 EasySpin自旋哈密顿量、CW谱有限脉冲与密度矩阵检验DeerLab前向模型、联合拟合正则化与不确定度DeerAnalysis/DeerNet交互处理与神经网络对照批处理取决于具体版本MMMx/chiLife标签构象与结构距离预测不读取实验脉冲响应 共同输出:带有模型定义、参数区间和残差的距离解释采集相位循环和谱仪硬件控制仍由实验程序承担
图14-1 软件包覆盖的对象不同。EasySpin适合谱学与自旋动力学,DeerLab及DeerAnalysis处理PDS时间迹,标签建模软件连接电子自旋距离与分子结构。

14.1 软件能力对照

软件主要环境适合任务不直接承担
EasySpinMATLABCW谱、耦合自旋体系、脉冲响应和自定义动力学通用PDS背景与距离反演工作流
DeerLabPythonPDS前向模型、参数化/非参数拟合、全局分析和不确定度谱仪采集相位循环
DeerAnalysisGUI及当前发布环境交互式PDS处理、常规距离反演和结果浏览自旋哈密顿量全谱模拟
DeerNet神经网络模块时间迹到距离分布的独立对照任意超出训练分布的物理模型
MMMx/chiLifeMATLAB/Python自旋标签rotamer及结构距离预测实验背景和脉冲选择函数

14.2 DeerLab具体案例:4-pulse DEER联合拟合

本例使用DeerLab 1.2.0构造一条带均匀三维背景的4-pulse DEER时间迹,并在加入固定随机种子的高斯噪声后,联合拟合高斯距离分布、调制深度、有效浓度和重聚时间。案例的用途是核对参数单位、实验路径定义、拟合对象和区间输出;数据为合成数据,不代表仪器测量。

已执行 Python环境中已完成前向计算与拟合。时间单位为μs,距离单位为nm,浓度单位为μM;随机种子固定为20260915。

14.2.1 计算条件与选择依据

项目设置本例中的作用
实验模型ex_4pdeer(0.50, 3.50, pathways=[1])显式定义主偶极路径及其重聚时间
时间轴0.10–3.996 μs,步长0.008 μs覆盖约4 μs的偶极演化,同时避免把负时间段写入本例
距离网格1.50–5.99 nm,步长0.01 nm包围3.20 nm主峰并留出核函数计算边界
距离模型单高斯,均值3.20 nm,标准差0.18 nm使峰位和峰宽具有可直接核对的设定值
背景与调制70 μM,调制深度0.35检验距离参数与背景、调制参数的联合估计
噪声独立高斯噪声,σ=0.003使区间估计与残差检查具有有限噪声条件

4-pulse DEER适用于此例,是因为两类自旋包可按pump和observer通道建模,目标距离落在常规脉冲偶极谱时间窗内,且单路径模型足以描述所构造的数据。若数据来自5-pulse或7-pulse DEER,应把相应次路径及其重聚时间写入实验模型,不能直接复用本例的单路径设定。

14.2.2 完整Python脚本

import json
from pathlib import Path

import deerlab as dl
import matplotlib.pyplot as plt
import numpy as np

OUTDIR = Path(__file__).resolve().parent
rng = np.random.default_rng(20260915)

# 4-pulse DEER timing and grids (time in microseconds, distance in nanometers)
tau1, tau2 = 0.50, 3.50
t = np.arange(0.10, tau1 + tau2, 0.008)
r = np.arange(1.50, 6.00, 0.01)
experiment = dl.ex_4pdeer(tau1, tau2, pathways=[1])

# Parametric distance model plus homogeneous intermolecular background
model = dl.dipolarmodel(t, r, Pmodel=dl.dd_gauss, experiment=experiment)
truth = dict(mean=3.20, std=0.18, conc=70.0,
             scale=1.0, mod=0.35, reftime=tau1)
V_clean = model(**truth)
V = V_clean + rng.normal(0.0, 0.003, t.size)

# Joint fit of distance, modulation depth, background concentration and refocusing time
fit = dl.fit(model, V, reg=False)
Pfit = fit.evaluate(dl.dd_gauss, r)
Pfit /= np.trapezoid(Pfit, r)
residual = V - fit.model

summary = {
    'deerlab_version': dl.__VERSION__,
    'truth': truth,
    'fit': {
        'mean_nm': float(fit.mean),
        'std_nm': float(fit.std),
        'conc_uM': float(fit.conc),
        'modulation_depth': float(fit.mod),
        'reftime_us': float(fit.reftime),
        'rms': float(np.sqrt(np.mean(residual**2))),
        'mean_95ci_nm': np.asarray(fit.meanUncert.ci(95)).tolist(),
        'std_95ci_nm': np.asarray(fit.stdUncert.ci(95)).tolist(),
    },
}
(OUTDIR / 'deerlab_case_results.json').write_text(
    json.dumps(summary, indent=2, ensure_ascii=False), encoding='utf-8')

fig, ax = plt.subplots(2, 1, figsize=(7.2, 6.0), constrained_layout=True)
ax[0].plot(t, V, '.', ms=2.1, color='#7a838a', label='synthetic data')
ax[0].plot(t, fit.model, lw=1.8, color='#285f8d', label='joint fit')
ax[0].set(xlabel='Time / μs', ylabel='V(t) / a.u.')
ax[0].legend(frameon=False)
ax[1].plot(r, Pfit, lw=2.0, color='#8d3b3b')
ax[1].axvline(truth['mean'], lw=1.0, ls='--', color='#53616c')
ax[1].set(xlabel='Distance / nm', ylabel='P(r) / nm⁻¹', xlim=(2.4, 4.0))
fig.savefig(OUTDIR / 'deerlab_case.svg', format='svg', metadata={'Date': None})

14.2.3 数值结果

拟合量设定值拟合值95%区间
平均距离3.200 nm3.2009 nm3.1981–3.2037 nm
分布标准差0.180 nm0.1775 nm0.1737–0.1812 nm
有效浓度70.0 μM70.60 μM本例未单列
调制深度0.3500.3492本例未单列
重聚时间0.500 μs0.4995 μs本例未单列
残差RMS噪声σ = 0.0030.002944—
image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/
图14-2 DeerLab合成案例的带噪时间迹、联合拟合和恢复距离分布。虚线表示设定的3.20 nm平均距离;曲线由本报告附带脚本实际生成。

14.2.4 结果解释与实验数据替换

平均距离和分布宽度均恢复到设定值附近,残差RMS为0.002944,与注入噪声的标准差0.003相当,说明本例中的前向模型与生成模型相容。该结果只验证代码路线及单位映射。实验数据还需经过复数相位、时间零点、异常点和采集序列检查。

替换为实测Bruker文件时,可使用t, V = dl.deerload("sample.DTA")读取时间轴和信号,并在建立模型前保存原始复数数据。若采用非参数距离分布,可移除Pmodel=dl.dd_gauss并启用相应正则化;输出中应增加正则化选择、点态区间和背景模型敏感性。

14.3 DeerAnalysis:交互处理与复查

DeerAnalysis适合交互检查时间零点、背景范围、Tikhonov参数和距离分布。2026版公开仓库说明其采用重新设计的界面,并结合DeerLab与DeerNet。正式项目应保存软件版本、项目文件、导出时间迹和处理设置,截图只能作为附加记录。

操作建议保存复查条件
相位与零点校正前后复数数据虚部和零点邻域无系统结构
背景拟合模型、拟合区间及参数改变区间后主结论稳定
TikhonovL-curve及多个\(\alpha\)主峰不依赖单个正则化点
DeerNet网络输出和区间与物理模型的差异得到解释

14.4 DeerNet:神经网络结果的定位

DeerNet由模拟数据库训练,可快速给出距离分布及不确定度估计。它适合作为独立分析通道和异常提示。训练数据覆盖的背景、噪声、距离范围和实验类型决定其适用范围;多路径、高自旋谐波、强取向选择和明显交换作用需要单独确认。

使用限制

神经网络与Tikhonov结果一致时,可以增加对主峰位置的信心;两者不一致时,应返回复数时间迹、背景、路径和训练分布适用性。结果差异不能通过简单平均处理。

14.5 EasySpin具体案例:CW耦合谱与脉冲自旋动力学

本节设置三个可执行案例。CW案例用pepper计算双亚硝基的距离及交换耦合扫描;Rabi案例用spidyan计算单自旋在有限矩形脉冲下的纵向磁化;Hahn echo案例用saffron对亚硝基粉末体系和整形脉冲进行回波瞬态计算。

本节脚本可复制到已安装EasySpin的MATLAB环境中手动运行。运行前应确认EasySpin已加入MATLAB搜索路径,并依据所用版本核对函数参数。示例输出用于比较距离、交换耦合、脉冲长度和脉冲形状对连续波谱或时间域信号的影响。

14.5.1 模型设置与距离映射

$$D_{dip}=\frac{52.04}{r^3}\ \mathrm{MHz},\qquad \mathbf D=\operatorname{diag}(D_{dip},D_{dip},-2D_{dip}).$$(14.1)
电子距离Sys.dip预期谱学效应
1.2 nm30.116 MHz偶极张量最大,双标谱相对参照谱出现最明显的展宽和线形重分配
1.5 nm15.419 MHz偶极效应处于中间水平,适合检查交换项与偶极项的相关性
2.0 nm6.505 MHz偶极贡献减弱,线宽、g/A应变和基线误差更易影响距离判别

Sys.dip的标量形式在EasySpin中展开为轴对称主值[D D -2D];Sys.J采用 (+J\mathbf S_1\cdot\mathbf S_2) 的哈密顿量约定。脚本中的两个亚硝基具有相同且共轴的g与A张量,因此属于刚性、简化的双自由基测试模型。实际蛋白标签应加入两标签相对取向、rotamer分布、g/A应变及可能的距离分布。

14.5.2 完整MATLAB脚本

clear; clc;
% EasySpin concrete case: X-band CW spectra of two coupled nitroxides
% Units: g dimensionless, A/J/dip in MHz, field in mT, mwFreq in GHz

rlist = [1.2 1.5 2.0];          % electron-electron distances / nm
gN = [2.009 2.006 2.002];
AN = [20 20 100];               % one 14N hyperfine tensor / MHz

Exp.mwFreq = 9.5;
Exp.Range = [330 350];
Exp.nPoints = 4096;
Opt.Method = 'matrix';

% Single-nitroxide reference
Ref.S = 1/2;
Ref.g = gN;
Ref.Nucs = '14N';
Ref.A = AN;
Ref.lwpp = 0.12;
[B,spcRef] = pepper(Ref,Exp,Opt);
spcRef = spcRef/max(abs(spcRef));

% Biradical distance scan. Scalar Sys.dip denotes [D D -2D].
spcDip = zeros(Exp.nPoints,numel(rlist));
for k = 1:numel(rlist)
  Sys.S = [1/2 1/2];
  Sys.g = [gN; gN];
  Sys.Nucs = '14N,14N';
  Sys.A = [AN 0 0 0; 0 0 0 AN];
  Sys.dip = 52.04/rlist(k)^3;   % point-dipole D / MHz
  Sys.J = 0;                   % +J*S1.S2 convention
  Sys.lwpp = 0.12;
  [B,spcDip(:,k)] = pepper(Sys,Exp,Opt);
  spcDip(:,k) = spcDip(:,k)/max(abs(spcDip(:,k)));
end

figure(1); clf
plot(B,spcRef,'k--','LineWidth',1.1); hold on
plot(B,spcDip,'LineWidth',1.2)
xlabel('Magnetic field / mT'); ylabel('Normalized first derivative')
legend('single nitroxide','1.2 nm','1.5 nm','2.0 nm')

% Exchange-coupling sensitivity at a fixed 1.5 nm distance
Jlist = [0 5 20];              % MHz
Sys.dip = 52.04/1.5^3;
spcJ = zeros(Exp.nPoints,numel(Jlist));
for k = 1:numel(Jlist)
  Sys.J = Jlist(k);
  [B,spcJ(:,k)] = pepper(Sys,Exp,Opt);
  spcJ(:,k) = spcJ(:,k)/max(abs(spcJ(:,k)));
end

figure(2); clf
plot(B,spcJ,'LineWidth',1.2)
xlabel('Magnetic field / mT'); ylabel('Normalized first derivative')
legend('J = 0 MHz','J = 5 MHz','J = 20 MHz')

14.5.3 输出读取与拟合扩展

输出判读内容实验用途
距离扫描谱耦合增强时谱翼、转折点和三线结构的共同变化确认双标谱变化可由偶极耦合解释的程度
交换扫描谱固定偶极项后,交换耦合引起的线位和整体线形变化检查仅以偶极展宽换算距离的偏差
单标参照谱g、A和本征线宽约束双标拟合中的共享谱学参数
残差与参数轮廓$r$、$J$、线宽和张量应变间的相关性给出可辨识区间,避免只报告单个最佳距离

实验全谱拟合可用EasySpin的esfit或外部优化器,把单标和双标数据作为联合目标函数。g、A和部分线宽由单标谱约束,双标谱增加距离分布及J项。小于约1.5–2.0 nm的刚性双自由基适合采用此路线;距离增大后偶极线形变化快速减弱,脉冲偶极谱通常更合适。

14.5.4 脉冲案例A:Rabi振荡与π/2、π脉宽标定

Rabi案例使用单个共振电子自旋和30 MHz矩形微波脉冲,按1 ns步长扫描脉冲长度。检测算符设为{'z1'},输出脉冲结束时的纵向磁化。共振且忽略弛豫时,理论关系为

$$M_z(t_p)=M_z(0)\cos(2\pi\nu_1t_p),\qquad \nu_1=30\ \mathrm{MHz}.$$(14.2)
量理论值模拟检查
Rabi周期33.33 ns相邻纵向磁化极大值的间隔
π/2脉宽8.33 ns首次 $M_z=0$ 的位置
π脉宽16.67 ns首次 $M_z=-M_z(0)$ 的位置
2π脉宽33.33 ns纵向磁化首次返回初值
clear; clc; clf
% EasySpin pulse case A: Rabi oscillation with spidyan

Sys.ZeemanFreq = 9.500;          % resonance frequency / GHz

Pulse.Type = 'rectangular';
Pulse.tp = 0.001;                % initial pulse length / µs
Pulse.Amplitude = 30;            % nutation frequency / MHz

Exp.Sequence = {Pulse};
Exp.mwFreq = 9.500;              % carrier frequency / GHz
Exp.DetWindow = 0;               % detect immediately after pulse
Exp.DetOperator = {'z1'};        % longitudinal electron magnetization

Exp.nPoints = 99;
Exp.Dim1 = {'p1.tp' 0.001};      % scan pulse 1 length in 1 ns steps

[tp,Mz] = spidyan(Sys,Exp);
figure(1); clf
plot(tp*1e3,real(Mz),'LineWidth',1.3)
xlabel('Pulse length / ns')
ylabel('<S_z> / normalized units')
title('Rabi oscillation, 30 MHz B_1')
grid on

该脚本用于检查脉宽、$B_1$与翻转角之间的映射。实验nutation曲线还包含 $B_1$空间不均匀、离共振、自旋包分布、谐振器瞬态和弛豫,因此振荡包络不能直接归属于单一 $T_2$。可在脚本中增加Sys.T1、Sys.T2及频率偏移扫描,分别检查弛豫和失谐影响。

14.5.5 脉冲案例B:整形脉冲亚硝基Hahn echo

EasySpin脉冲模拟案例 A Rabi:扫描矩形脉冲长度p1.tp = 1, 2, …, 99 ns检测 ⟨Sᶻ⟩ B Hahn echo:有限带宽整形脉冲π/2 chirpπ chirpecho windowττ + tπ
图14-3 Rabi案例以脉宽为间接维;Hahn echo案例使用有限时长、有限扫频范围的整形脉冲并输出复数回波窗口。

Hahn echo案例采用亚硝基 $S=1/2$、$I=1$ 自旋哈密顿量,在324.9 mT和9.1 GHz条件下使用±120 MHz扫频的quarter-sine/linear脉冲。π/2脉冲长度为0.200 μs,π脉冲长度为0.100 μs,脉冲间边沿延迟为0.200 μs。

EasySpin对象本例设置物理含义
p90.Frequency[-120, 120] MHz相对载频的扫频范围
p90.trise0.030 μsquarter-sine边沿平滑时间
Exp.Sequence{p90 tau p180 tau+p180.tp}EasySpin延迟按前一事件末端至后一事件起点定义;补加π脉冲时长使检测窗位于回波中心附近
Exp.DetWindow[-0.15, 0.15] μs回波中心两侧的复数瞬态窗口
Opt.GridSize30粉末取向平均网格,正式计算需做收敛性检查
clear; clc; clf
% EasySpin pulse case B: nitroxide Hahn echo with shaped pulses

Sys.S = 1/2;
Sys.g = [2.009 2.006 2.002];
Sys.Nucs = '14N';
Sys.A = [11 11 95];              % MHz
Exp.Field = 324.9;               % mT
Exp.mwFreq = 9.1;                % GHz

% Quarter-sine-edged linear chirp excitation pulse
p90.Type = 'quartersin/linear';
p90.tp = 0.200;                  % µs
p90.Flip = pi/2;
p90.Frequency = [-120 120];      % MHz relative to carrier
p90.trise = 0.030;               % µs

% Refocusing pulse with the same sweep range
p180 = p90;
p180.tp = 0.100;                 % µs
p180.Flip = pi;

tau = 0.200;                     % µs
Exp.Sequence = {p90 tau p180 tau+p180.tp};
Exp.DetWindow = [-0.15 0.15];    % echo transient window / µs
Exp.DetPhase = pi;

Opt.GridSize = 30;               % powder-orientation grid
Opt.Verbosity = true;

[t,echo] = saffron(Sys,Exp,Opt);
figure(2); clf
plot(t,real(echo),'LineWidth',1.3); hold on
plot(t,imag(echo),'LineWidth',1.0)
xlabel('Detection time / µs')
ylabel('Echo signal / a.u.')
legend('I','Q')
title('Nitroxide Hahn-echo transient')
grid on

该案例用于比较I/Q回波、整形脉冲覆盖和取向平均。改变扫频范围可检查脉冲带宽不足引起的谱包选择;改变GridSize可识别离散取向采样产生的伪回波;把整形脉冲替换为矩形脉冲可比较有限带宽条件下的回波幅度和相位。

14.5.6 EasySpin脉冲函数的适用边界

函数适合对象本报告案例限制条件
spidyan有限脉冲、任意事件序列、状态轨迹和自定义检测Rabi振荡一次调用处理单一自旋包;粉末谱需显式循环或另用saffron
saffron单电子体系的脉冲EPR/ENDOR、粉末平均和瞬态亚硝基Hahn echo当前文档限定为单电子自旋体系;双电子PDS需另建传播模型
evolve密度矩阵在理想脉冲与自由演化阶段的传播本节未单列脉冲有限带宽和整形波形需由更完整的传播方法处理

这两个脉冲案例覆盖实验前置校准与回波形成,尚未把4-pulse DEER、DQC或RIDME完整序列写成EasySpin双电子计算程序。此类PDS模拟需同时处理两个电子、自旋包选择、pump/observer频率、粉末取向、路径选择和相位循环,适合作为独立计算模块开发。

14.6 MMMx与chiLife:标签构象到预测距离

标签建模软件从分子结构和位点生成rotamer集合,计算电子自旋中心间的预测分布。其输出用于比较结构状态、选择标签位点和解释峰宽。实验选择权重、标记失败、聚集和背景不包含在常规rotamer计算中。

输入输出需与实验共同检查
PDB/结构模型位点局部空间和标签可达体积结构状态及缺失残基
标签类型与rotamer库标签构象和权重温度、溶剂和局部相互作用
两个标记位点预测\(P_{calc}(r)\)实验选择函数和反演分辨
多结构状态各状态距离分布状态比例及共享标签模型

14.7 案例组合与后续扩展

案例选用方法的理由说明的实验问题扩展数据
EasySpin双亚硝基CW1.2–2.0 nm短距离会改变整条CW线形,且$J$项可能不可忽略双标展宽中可归属于偶极耦合的部分及$D/J$相关性单标谱、温度系列、刚性分子尺
EasySpin Rabi脉宽扫描直接连接 $B_1$、nutation频率和翻转角π/2、π脉宽标定及失谐、弛豫、$B_1$不均匀的影响实测nutation数据、谐振器瞬态和功率标定
EasySpin Hahn echo有限扫频脉冲和粉末取向共同决定可检测回波整形脉冲覆盖、I/Q相位、检测窗及取向网格收敛实测反转轮廓、回波瞬态和场位系列
DeerLab 4-pulse DEER频率分离的自旋包和约4 μs时间窗适合标准单路径模型距离峰位、分布宽度、调制深度和背景可在同一前向模型中估计实测复数时间迹、背景候选模型、重复测量
MMMx/chiLife结构比较实验给出电子自旋距离,结构解释还需标签rotamer映射候选构象的距离分布及状态比例与实验分布的相容程度PDB、标签类型、位点与结构状态集合

EasySpin三项案例和DeerLab案例均给出完整代码,DeerLab案例同时给出实际运行结果。结构标签案例需要指定PDB、标记位点和标签类型,适合在后续具体样品章节中建立,避免用任意结构产生没有项目含义的示例。

14.8 方法与软件选择矩阵

实验条件实验方法分析工具组合最低检查
短距离且CW展宽明显CW全谱分析EasySpin+联合拟合脚本单标对照、\(D/J\)轮廓
谱包可频率分离4p DEERDeerLab或DeerAnalysis+DeerNet对照反转轮廓、背景和零点
长时间窗受Hahn衰减限制5p/7p DEERDeerLab多路径模型路径幅度和回波交叉
同类自旋谱线高度重叠DQC或SIFTEREasySpin有限脉冲检查+DeerLab自定义核宽带覆盖和过滤组分
宽谱金属伙伴且\(T_1\)合适RIDMEDeerLab谐波模型+混合时间全局拟合overtone coefficients
刚性标签或金属中心取向明显多场位PDSEasySpin选择函数+全局前向模型g/A/ZFS与Euler角
需要连接结构模型任一可靠PDS方法DeerLab+MMMx/chiLife电子中心与骨架距离区分

14.9 软件结果的三级检查

级别内容通过条件
A级同一软件内的残差、参数轮廓和模型比较残差无系统结构,参数区间有限
B级两种计算路线处理同一时间迹主距离与主要状态结论一致
C级实验条件或结构对照浓度、场位、标签或独立结构数据给出相容结果

软件间一致只覆盖计算实现。实验伪影、错误序列模型或共同的前提错误可能在多个软件中产生相似结果,因此仍需实验对照。

14.10 可重复计算记录

记录项内容
环境操作系统、MATLAB/Python版本、软件包版本和依赖
输入原始文件校验值、单位、通道和元数据
预处理相位、零点、裁剪、异常点和归一化
模型核函数、背景、路径、谐波、取向和约束
输出拟合曲线、残差、参数表、距离分布及区间
结构PDB版本、标签库、位点和rotamer设置

14.11 本章结论

第三方软件可以覆盖谱学模拟、PDS反演、神经网络对照和标签结构建模,无需从头开发全部算法。项目仍需编写数据导入、单位统一、元数据保存、批处理和结果汇总代码。采集相位循环、硬件时序和目标谱仪校准不由这些分析包代替。