[ PROMPT_NODE_27230 ]
rdkit
[ SKILL_DOCUMENTATION ]
# RDKit 化学信息学工具包
## 概述
RDKit 是一个综合性的化学信息学库,提供用于分子分析和操作的 Python API。本技能提供有关读取/写入分子结构、计算描述符、指纹识别、子结构搜索、化学反应、2D/3D 坐标生成以及分子可视化的指导。适用于药物发现、计算化学和化学信息学研究任务。
## 核心能力
### 1. 分子 I/O 与创建
**读取分子:**
从多种格式读取分子结构:
python
from rdkit import Chem
# 从 SMILES 字符串
mol = Chem.MolFromSmiles('Cc1ccccc1') # 返回 Mol 对象或 None
# 从 MOL 文件
mol = Chem.MolFromMolFile('path/to/file.mol')
# 从 MOL 块 (字符串数据)
mol = Chem.MolFromMolBlock(mol_block_string)
# 从 InChI
mol = Chem.MolFromInchi('InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H')
**写入分子:**
将分子转换为文本表示:
python
# 转换为规范 SMILES
smiles = Chem.MolToSmiles(mol)
# 转换为 MOL 块
mol_block = Chem.MolToMolBlock(mol)
# 转换为 InChI
inchi = Chem.MolToInchi(mol)
**批量处理:**
对于处理多个分子,使用 Supplier/Writer 对象:
python
# 读取 SDF 文件
suppl = Chem.SDMolSupplier('molecules.sdf')
for mol in suppl:
if mol is not None: # 检查解析错误
# 处理分子
pass
# 读取 SMILES 文件
suppl = Chem.SmilesMolSupplier('molecules.smi', titleLine=False)
# 对于大文件或压缩数据
with gzip.open('molecules.sdf.gz') as f:
suppl = Chem.ForwardSDMolSupplier(f)
for mol in suppl:
# 处理分子
pass
# 大数据集的多线程处理
suppl = Chem.MultithreadedSDMolSupplier('molecules.sdf')
# 将分子写入 SDF
writer = Chem.SDWriter('output.sdf')
for mol in molecules:
writer.write(mol)
writer.close()
**重要说明:**
- 所有 `MolFrom*` 函数在失败时返回 `None` 并附带错误消息
- 在处理分子前务必检查是否为 `None`
- 分子在导入时会自动进行标准化 (验证化合价、感知芳香性)
### 2. 分子标准化与验证
RDKit 在解析过程中会自动对分子进行标准化,执行包括化合价检查、芳香性感知和手性分配在内的 13 个步骤。
**标准化控制:**
python
# 禁用自动标准化
mol = Chem.MolFromSmiles('C1=CC=CC=C1', saniti