You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用RDKit导出Pandas DataFrame为.mol/.sdf及转换Smiles至Mold2?

批量将SMILES转换为Mold2格式(GUI工具操作)
  • 准备输入文件:把所有需要转换的SMILES整理到纯文本文件(.txt)中,每行一个SMILES;如果需要关联分子ID,可在每行SMILES前添加ID,用制表符分隔
  • 打开Mold2 GUI工具后,按以下步骤操作:
    • 点击菜单栏「File」→「Load SMILES」,选择你准备好的文本文件
    • 在参数配置界面,指定输出文件路径,并根据需求选择要生成的Mold2特征类别
    • 点击「Start」启动批量转换,完成后会在指定路径生成包含Mold2特征的输出文件(常见格式为.csv或.txt)
使用RDKit将Pandas DataFrame导出为.mol或.sdf文件

前提条件

确保你的环境已安装RDKit和Pandas,且DataFrame中包含有效的SMILES列(示例中列名为SMILES)


导出为单个.mol文件(仅适用于单分子)

import pandas as pd
from rdkit import Chem
from rdkit.Chem import rdMolWriter

# 读取目标DataFrame
df = pd.read_csv("your_input_data.csv")

# 将SMILES转换为RDKit Mol对象
mol = Chem.MolFromSmiles(df["SMILES"].iloc[0])

# 写入.mol文件
writer = rdMolWriter.MolWriter("single_molecule.mol")
writer.write(mol)
writer.close()

导出为.sdf文件(多分子批量导出)

import pandas as pd
from rdkit import Chem
from rdkit.Chem import SDWriter

# 读取目标DataFrame
df = pd.read_csv("your_input_data.csv")

# 初始化SDWriter对象
writer = SDWriter("molecules_batch.sdf")

# 遍历DataFrame处理每个分子
for _, row in df.iterrows():
    mol = Chem.MolFromSmiles(row["SMILES"])
    if mol:  # 跳过无效SMILES对应的条目
        # 可选:将DataFrame中的其他字段作为分子属性写入
        if "ID" in df.columns:
            mol.SetProp("Molecule_ID", str(row["ID"]))
        writer.write(mol)

# 关闭写入器
writer.close()

注意事项

  • 转换前建议验证SMILES的有效性,避免因无效结构导致导出失败
  • 若需要保留更多分子属性,可通过mol.SetProp(key, value)方法将DataFrame中的列值添加到Mol对象中

内容的提问来源于stack exchange,提问作者Petr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:48:58