ProLIF(Protein-Ligand Interaction Fingerprints)把蛋白与配体之间的相互作用编码成结构化的指纹——哪个残基、以什么类型的相互作用、在哪一帧发生。相比只看一张结合模式图,指纹让相互作用变成可统计、可比较、可做机器学习特征的数据。
安装
pip install prolif
# 依赖 RDKit 与 MDAnalysis
分析 MD 轨迹中的相互作用
import MDAnalysis as mda
import prolif as plf
u = mda.Universe("topology.pdb", "traj.dcd")
protein = plf.Molecule.from_mda(u.select_atoms("protein"))
lig_sel = u.select_atoms("resname MOL")
fp = plf.Fingerprint(["HBAcceptor", "HBDonor", "Hydrophobic",
"PiStacking", "Anionic", "Cationic", "CationPi"])
fp.run(u.trajectory[::5], lig_sel, u.select_atoms("protein"))
df = fp.to_dataframe() # MultiIndex 列:(ligand, residue, interaction)
occupancy = df.mean() * 100 # 每种相互作用的占有率(%)
print(occupancy.sort_values(ascending=False).head(15))
输出是一张按帧 × (残基, 相互作用类型) 的布尔表。对帧取平均就得到占有率——这是把 MD 轨迹转成可读结论最直接的方式。
支持的相互作用类型
| 类型 | 说明 |
|---|---|
| HBDonor / HBAcceptor | 氢键(分供体受体两个方向) |
| Hydrophobic | 疏水接触 |
| PiStacking(Face/Edge) | 芳环堆积,可区分面对面与边对面 |
| CationPi / PiCation | 阳离子-π |
| Anionic / Cationic | 盐桥 |
| XBDonor / XBAcceptor | 卤键 |
| MetalDonor / MetalAcceptor | 金属配位 |
| VdWContact | 范德华接触 |
每种相互作用的几何判据(距离、角度阈值)都可自定义。默认参数适用于多数情况,但金属体系、非常规相互作用可能需要调整。
三个实际用法
- 判断对接姿势是否可信:把对接的多个姿势各自算指纹,与共晶结构的指纹比对。能复现关键相互作用的姿势才值得采纳,这比只看对接分数可靠得多。
- 统计相互作用稳定性:MD 轨迹上占有率 >70% 的相互作用是稳定的结构特征;<30% 的属于偶发接触,不应写进结合模式结论。这条判据能挡掉大量过度解读。
- 做 SAR 解释与建模特征:把一系列类似物的指纹拼成矩阵,与活性数据一起分析,可以看出哪些相互作用与活性提升相关;指纹本身也可以直接作为机器学习特征。
# 比较多个对接姿势与参考晶体结构的指纹相似度
poses = plf.sdf_supplier("docked_poses.sdf")
fp = plf.Fingerprint()
fp.run_from_iterable(poses, protein)
df_poses = fp.to_dataframe()
ref = df_poses.iloc[[0]] # 假设第一行是参考
tanimoto = df_poses.apply(
lambda r: (r & ref.iloc[0]).sum() / (r | ref.iloc[0]).sum(), axis=1)
print(tanimoto.sort_values(ascending=False))
可视化
fp.plot_barcode() # 相互作用随时间的条码图
fp.plot_lignetwork(lig_mol, kind="frame", frame=0) # 交互式 2D 网络图
条码图(barcode)在展示 MD 结果时特别有用:横轴时间、纵轴各相互作用,一眼能看出哪些持续存在、哪些中途丢失。
上手提示
- 它把相互作用变成可统计的数据,这是相对看图的本质进步;
- 用「能否复现共晶关键相互作用」筛对接姿势,比看分数可靠;
- 占有率 >70% 才算稳定相互作用,<30% 不要写进结论;
- 指纹可直接作为 ML 特征,用于 SAR 建模。
延伸资源
- 对照工具:208《PLIP》;轨迹分析:205《MDAnalysis》、206《MDTraj》;
- 相互作用类型概念见「结构与模拟」模块;
- 对接结果评估:096《Binding Pose》。