[ PROMPT_NODE_26438 ]
datamol
[ SKILL_DOCUMENTATION ]
# Datamol 化学信息学技能
## 概述
Datamol 是一个 Python 库,为 RDKit 提供了轻量级、Python 化的抽象层,用于分子化学信息学。它通过合理的默认设置、高效的并行化和现代 I/O 能力简化了复杂的分子操作。所有分子对象均为原生的 `rdkit.Chem.Mol` 实例,确保与 RDKit 生态系统的完全兼容。
**关键能力**:
- 分子格式转换 (SMILES, SELFIES, InChI)
- 结构标准化和清洗
- 分子描述符和指纹
- 3D 构象生成与分析
- 聚类和多样性选择
- 骨架和片段分析
- 化学反应应用
- 可视化与对齐
- 批量处理与并行化
- 通过 fsspec 支持云存储
## 安装与设置
引导用户安装 datamol:
bash
uv pip install datamol
**导入约定**:
python
import datamol as dm
## 核心工作流
### 1. 基础分子处理
**从 SMILES 创建分子**:
python
import datamol as dm
# 单个分子
mol = dm.to_mol("CCO") # 乙醇
# 从 SMILES 列表
smiles_list = ["CCO", "c1ccccc1", "CC(=O)O"]
mols = [dm.to_mol(smi) for smi in smiles_list]
# 错误处理
mol = dm.to_mol("invalid_smiles") # 返回 None
if mol is None:
print("SMILES 解析失败")
**将分子转换为 SMILES**:
python
# 规范化 SMILES
smiles = dm.to_smiles(mol)
# 同分异构 SMILES (包含立体化学)
smiles = dm.to_smiles(mol, isomeric=True)
# 其他格式
inchi = dm.to_inchi(mol)
inchikey = dm.to_inchikey(mol)
selfies = dm.to_selfies(mol)
**标准化和清洗** (强烈建议对用户提供的分子使用):
python
# 清洗分子
mol = dm.sanitize_mol(mol)
# 完全标准化 (推荐用于数据集)
mol = dm.standardize_mol(
mol,
disconnect_metals=True,
normalize=True,
reionize=True
)
# 直接处理 SMILES 字符串
clean_smiles = dm.standardize_smiles(smiles)
### 2. 读取和写入分子文件
请参考 `references/io_module.md` 获取全面的 I/O 文档。
**读取文件**:
python
# SDF 文件 (化学中最常见)
df = dm.read_sdf("compounds.sdf", mol_column='mol')
# SMILES 文件
df = dm.read_smi("molecules.smi", smiles_column='smiles', mol_column='mol')
# 带有 SMILES 列的 CSV
df = dm.read_csv("data.csv", smiles_column="SMILES", mol_column="mol")
# Excel 文件
df = dm.read_