分子描述符:从分子结构到数字的翻译官
做QSAR这么多年,我越来越觉得,分子描述符是整个模型的基石。说白了,就是把化学结构翻译成计算机能看懂的数字。你想想看,计算机不懂苯环、不懂羰基,但它懂0和1、懂浮点数。描述符就是干这个活儿的——把化学信息编码成数值向量。
我个人习惯把描述符分成四类:结构描述符、理化性质描述符、拓扑描述符、3D描述符。每一类都有自己的脾气,用错了地方,模型结果就会很难看。
结构描述符:最基础的分子身份证
结构描述符是最直观的一类。它直接反映分子组成和连接方式,计算成本极低,几乎零开销。
- 原子计数(C、N、O、S、卤素等)
- 键的类型与数量(单键、双键、三键、芳香键)
- 分子式、分子量
- 环的个数(三元环、五元环、六元环…)
- 官能团计数(羟基、羧基、氨基等)
我在项目中遇到过一件事:有一次筛选激酶抑制剂,结构描述符里“芳香环个数”这个特征,直接帮我们过滤掉了一大批活性差但结构相似的分子。嗯,就是这么简单粗暴的特征,有时候反而最管用。
理化性质描述符:分子与环境的交互密码
这类描述符模拟分子在真实环境中的行为。计算机算什么?它算的是分子如何跟水、脂质、蛋白质口袋“打交道”。
| 描述符 | 含义 | 典型应用 |
|---|---|---|
| logP | 脂水分配系数 | 吸收、透膜性预测 |
| pKa | 酸解离常数 | 离子状态、溶解度 |
| 极性表面积(PSA) | 分子表面极性原子占比 | 肠吸收、血脑屏障 |
| 溶解度(logS) | 水溶性估算 | 成药性筛选 |
| 摩尔折射率(MR) | 极性/体积综合指标 | 结合力估算 |
我曾经在构建一个CYP450代谢预测模型时,发现只用拓扑描述符死活调不好。后来加了logP和PSA这两个简单理化特征,R²直接从0.6跳到0.85。为什么?因为代谢涉及膜结合酶,分子的疏水性非常关键,拓扑描述符根本不会替你考虑这个。
拓扑描述符:分子的二维指纹
拓扑描述符是我个人认为最“聪明”的一类。它不直接算物理性质,而是分析分子图的连接拓扑——原子怎么连、路径怎么走、信息怎么传播。
常用的拓扑描述符包括:
- Wiener指数:所有原子对间最短路径距离之和。反映分子“紧凑度”。
- Zagreb指数:基于顶点度的拓扑量。与分子分支程度相关。
- 分子指纹(Fingerprint):如ECFP、MACCS等。将分子结构编码成固定长度的位向量。
- Kier&Hall 指数:考虑连接性和形状的混合指标。
分子指纹这块,我多说两句。ECFP是现在最流行的拓扑描述符之一,它从每个原子出发,遍历半径内的邻居,生成一种“子结构字典”,最后哈希成固定长度的位向量。
# 用RDKit计算ECFP4指纹的示例
from rdkit import Chem
from rdkit.Chem import AllChem
mol = Chem.MolFromSmiles('CC(=O)OC1=CC=CC=C1C(=O)O')
fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits=2048)
# 2表示半径2(即ECFP4),2048位向量长度
print(fp.ToBitString()[:32]) # 打印前32位
我在实际项目里,用ECFP4做过一个活性悬崖(Activity Cliff)分析。两个结构只差一个甲基,活性差异100倍。把它们的指纹一对比,差异位点正好指向那个关键甲基位置。这就是拓扑描述符的价值——它保留了结构关系。
- ✅ 计算快,比3D描述符快几个数量级
- ✅ 不需要分子构象,省去构象搜索的麻烦
- ✅ 对骨架跳跃(scaffold hopping)敏感度适中
- ⚠️ 没有三维立体信息,可能漏掉手性和构象效应
3D描述符:分子的空间几何真相
到了这一步,我们开始考虑分子的真实三维结构。不是平面画图,而是原子在空间里的坐标、形状、表面、静电分布。
常见的3D描述符包括:
- 分子体积、表面积:Van der Waals表面、溶剂可及表面
- 偶极矩:电荷分布的不对称性
- 3D分子形状描述符:如PMI(主惯性矩)、粗糙度
- 静电势表面(ESP):分子周围的静电势分布
- 药效团特征:基于3D坐标的氢键受体/供体位点、疏水区域
这里要注意一个问题:3D描述符依赖分子构象。同一个分子,在不同构象下算出的体积、偶极矩可能完全不同。而且,计算3D描述符的成本远高于前两类——需要能量最小化、构象搜索、甚至可能要跑分子动力学。
四类描述符的对比与选择
| 描述符类型 | 信息维度 | 计算成本 | 典型场景 |
|---|---|---|---|
| 结构描述符 | 组成/拓扑 | 极低 | 快速过滤、数据清洗 |
| 理化性质描述符 | 分子-环境交互 | 低~中 | ADMET预测、成药性评估 |
| 拓扑描述符 | 二维连接关系 | 低 | 活性预测、相似性搜索 |
| 3D描述符 | 空间几何/电子 | 高 | 对接后分析、药效团建模 |
实际项目中,我一般不会只用一类描述符。我的习惯做法是:先用结构+理化描述符做快速筛选,再用拓扑描述符建基础模型,最后用3D描述符做精细优化。你想想看,不同描述符看到的是同一个分子的不同侧面,组合起来才能画出完整的画像。
但也要注意,不是所有描述符都适合混在一起用。比如把结构描述符(原子计数)和3D描述符(体积)同时放进模型,大概率有强共线性,反而会降低模型可解释性。嗯,这里要留个心眼。