[ PROMPT_NODE_26848 ]
Molfeat 使用示例
[ SKILL_DOCUMENTATION ]
# Molfeat 使用示例
本文档提供了常见 molfeat 用例的实践示例。
## 安装
bash
# 推荐:使用 conda/mamba
mamba install -c conda-forge molfeat
# 替代方案:使用 pip
pip install molfeat
# 安装所有可选依赖
pip install "molfeat[all]"
# 安装特定依赖
pip install "molfeat[dgl]" # 用于 GNN 模型
pip install "molfeat[graphormer]" # 用于 Graphormer
pip install "molfeat[transformer]" # 用于 ChemBERTa, ChemGPT
---
## 快速入门
### 基本特征化工作流
python
import datamol as dm
from molfeat.calc import FPCalculator
from molfeat.trans import MoleculeTransformer
# 加载示例数据
data = dm.data.freesolv().sample(100).smiles.values
# 单分子特征化
calc = FPCalculator("ecfp")
features_single = calc(data[0])
print(f"单分子特征形状: {features_single.shape}")
# 输出: (2048,)
# 并行批处理特征化
transformer = MoleculeTransformer(calc, n_jobs=-1)
features_batch = transformer(data)
print(f"批处理特征形状: {features_batch.shape}")
# 输出: (100, 2048)
---
## 计算器示例
### 指纹计算器
python
from molfeat.calc import FPCalculator
# ECFP (扩展连接性指纹)
ecfp = FPCalculator("ecfp", radius=3, fpSize=2048)
fp = ecfp("CCO") # 乙醇
print(f"ECFP 形状: {fp.shape}") # (2048,)
# MACCS 键
maccs = FPCalculator("maccs")
fp = maccs("c1ccccc1") # 苯
print(f"MACCS 形状: {fp.shape}") # (167,)
# 基于计数的指纹
ecfp_count = FPCalculator("ecfp-count", radius=3)
fp_count = ecfp_count("CC(C)CC(C)C") # 非二进制计数
# MAP4 指纹
map4 = FPCalculator("map4")
fp = map4("CC(=O)Oc1ccccc1C(=O)O") # 阿司匹林
### 描述符计算器
python
from molfeat.calc import RDKitDescriptors2D, MordredDescriptors
# RDKit 2D 描述符 (200+ 属性)
desc2d = RDKitDescriptors2D()
descriptors = desc2d("CCO")
print(f"2D 描述符数量: {len(descriptors)}")
# 获取描述符名称
names = desc2d.columns
print(f"前 5 个描述符: {names[:5]}")
# Mordred 描述符 (1800+ 属性)
mordred = MordredDescriptors()
descriptors = mordred("c1ccccc1O") # 苯酚
print(f"Mordred 描述符: {len(descriptors)}")
### 药效团计算器
python
from molfeat.calc import CATSCalculator
# 2D CATS 描述符
cats = CATSCalculator(mode="2D", scale="raw")
descriptors = cats("CC(C)Cc1ccc(C)cc1C") # 伞花烃
print(f"CATS "},