SuperAPI AI 工具集

molfeat

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

用途

molfeat 是一个用于分子特征化的 Python 库,目标是把化学结构(SMILES 字符串或 RDKit 分子)转换为可供机器学习使用的数值表示。它统一整合了 100 多种预训练嵌入与手工特征器,适用于 QSAR 建模、虚拟筛选、相似性搜索和深度学习等任务。

主要能力

molfeat 将特征化组织为三个层级类:

  1. 计算器(molfeat.calc):可调用对象,将单个分子转换为特征向量,接受 RDKit Chem.Mol 对象或 SMILES 字符串。适合单分子特征化、自定义处理循环和直接特征计算。
  2. 转换器(molfeat.trans):兼容 scikit-learn 的转换器,包装计算器以进行批处理并支持并行化。适合分子数据集批量特征化、与 scikit-learn 管道集成以及自动利用 CPU 的并行处理。
  3. 预训练转换器(molfeat.trans.pretrained):面向深度学习模型的专用转换器,支持批量推理与缓存。适合获取先进分子嵌入、从大型化学数据集迁移学习以及深度学习特征提取。

库还提供 ModelStore(molfeat.store.modelstore)用于探索全部可用特征器、搜索模型、查看用法并加载模型。支持保存与加载特征器配置(to_state_yaml_file / from_state_yaml_file)以保证可复现性,支持 ignore_errors 与 verbose 以优雅处理无效分子。

使用方式

安装需使用 Python 3.9 或 3.10 环境(截至 0.11.0 不支持 3.11+):

uv pip install "molfeat==0.11.0"

安装全部可选依赖:

uv pip install "molfeat[all]==0.11.0"

可选依赖 extras(PyPI):molfeat[dgl](GNN 模型,GIN 变体,上游建议 dgl<=2.0)、molfeat[graphormer](Graphormer 模型)、molfeat[transformer](ChemBERTa、ChemGPT、MolT5)、molfeat[fcd](FCD 描述符)、molfeat[pyg](PyTorch Geometric 特征器)、molfeat[viz](NGLView 可视化组件)。MAP4 未包含在 extras 中,需从 reymond-group/map4 单独安装。部分重型依赖(DGL、dgllife、graphormer-pretrained)通过 conda-forge 更易安装。

基本用法示例:

from molfeat.calc import FPCalculator from molfeat.trans import MoleculeTransformer

smiles = ["CCO", "CC(=O)O", "c1ccccc1", "CC(C)O"] calc = FPCalculator("ecfp", radius=3) transformer = MoleculeTransformer(calc, n_jobs=-1) features = transformer(smiles)

预训练嵌入示例:

from molfeat.trans.pretrained import PretrainedMolTransformer transformer = PretrainedMolTransformer("ChemBERTa-77M-MLM", n_jobs=-1) embeddings = transformer(smiles_list)

适用场景

  • 分子机器学习:构建 QSAR/QSPR 模型、性质预测
  • 虚拟筛选:对化合物库排序以评估生物活性
  • 相似性搜索:查找结构相似的分子
  • 化学空间分析:聚类、可视化、降维
  • 深度学习:在分子数据上训练神经网络
  • 特征化管道:将 SMILES 转换为机器学习就绪的表示
  • 化学信息学:任何需要分子特征提取的任务

限制与注意事项

  • 版本与依赖:示例针对 molfeat 0.11.0(PyPI 稳定版,2025 年 5 月),需 Python 3.9–3.10(requires-python 上限低于 3.11),依赖 datamol ≥0.8.0 与 PyTorch ≥1.13。自 0.8.7 起建议优先使用 datamol Mol 对象而非原始 rdkit.Chem.Mol;自 0.10.1 起指纹计算器内部使用 RDKit 的 rdFingerprintGenerator API;自 0.11.0 起预训练模型加载到内存且基础模型自动设为 PyTorch 评估模式。
  • 性能:指纹类特征器比深度学习模型快;预训练模型首次运行较慢,后续运行受益于缓存。可使用 n_jobs=-1 并行、批处理、dtype=np.float32 及 ignore_errors=True 优化。
  • 大数据集:超过 10 万分子建议分块或流式处理以管理内存。
  • 缓存安全:自定义嵌入缓存建议使用 NumPy 数组而非 pickle(pickle 加载不可信文件时可能执行任意代码)。
  • 预训练模型依赖:部分模型需额外安装对应 extras,并建议固定版本以保证可复现。

参考资源

官方文档:https://molfeat-docs.datamol.io/ GitHub 仓库:https://github.com/datamol-io/molfeat PyPI 包:https://pypi.org/project/molfeat/ 教程:https://portal.valencelabs.com/datamol/post/types-of-featurizers-b1e8HHrbFMkbun6

技能内还包含参考文档:references/api_reference.md(完整 API)、references/available_featurizers.md(100+ 特征器目录)、references/examples.md(实用代码示例)、references/choosing_a_featurizer.md(按任务选择特征器及常见工作流)。