[ PROMPT_NODE_26446 ]
fragments_scaffolds
[ SKILL_DOCUMENTATION ]
# Datamol 碎片与骨架参考
## 骨架模块 (`datamol.scaffold`)
骨架代表分子的核心结构,对于识别结构家族和分析构效关系 (SAR) 非常有用。
### Murcko 骨架
#### `dm.to_scaffold_murcko(mol)`
提取 Bemis-Murcko 骨架(分子框架)。
- **方法**: 去除侧链,保留环系统和连接基团
- **返回**: 代表骨架的分子对象
- **用例**: 识别化合物系列中的核心结构
- **示例**:
python
mol = dm.to_mol("c1ccc(cc1)CCN") # 苯乙胺
scaffold = dm.to_scaffold_murcko(mol)
scaffold_smiles = dm.to_smiles(scaffold)
# 返回: 'c1ccccc1CC' (苯环 + 乙基连接基团)
**骨架分析工作流**:
python
# 从化合物库中提取骨架
scaffolds = [dm.to_scaffold_murcko(mol) for mol in mols]
scaffold_smiles = [dm.to_smiles(s) for s in scaffolds]
# 计算骨架频率
from collections import Counter
scaffold_counts = Counter(scaffold_smiles)
most_common = scaffold_counts.most_common(10)
### 模糊骨架
#### `dm.scaffold.fuzzy_scaffolding(mol, ...)`
生成带有强制基团的模糊骨架,这些基团必须出现在核心中。
- **目的**: 更灵活的骨架定义,允许指定官能团
- **用例**: 超出 Murcko 规则的自定义骨架定义
### 应用
**基于骨架的拆分** (用于机器学习模型验证):
python
# 按骨架对化合物分组
scaffold_to_mols = {}
for mol, scaffold in zip(mols, scaffolds):
smi = dm.to_smiles(scaffold)
if smi not in scaffold_to_mols:
scaffold_to_mols[smi] = []
scaffold_to_mols[smi].append(mol)
# 确保训练集/测试集具有不同的骨架
**SAR 分析**:
python
# 按骨架分组并分析活性
for scaffold_smi, molecules in scaffold_to_mols.items():
activities = [get_activity(mol) for mol in molecules]
print(f"骨架: {scaffold_smi}, 平均活性: {np.mean(activities)}")
---
## 碎片模块 (`datamol.fragment`)
分子碎片化根据化学规则将分子分解成更小的部分,适用于基于碎片的药物设计和子结构分析。
### BRICS 碎片化
#### `dm.fragment.brics(mol, ...)`
使用 BRICS(逆合成有趣的化学子结构断裂)对分子进行碎片化。
- **方法**: 基于 16 种具有化学意义的键类型进行解剖
- **注意事项**: