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

MBL Molfile格式解析报错:如何修正格式并生成分子图像?

Molfile格式问题分析及修正方案

1. 当前Molfile的错误点

  • 计数行原子数错误:第一行有效内容(1 0 0 0 0 0 999 V2000)的第一个数字代表原子总数,你写了1,但实际包含3个原子(O+2H),RDKit解析时会误判原子数量,导致后续行解析失败。
  • 原子行字段误用:你在原子行的第6个字段填写了-1、1,这不符合V2000格式规范。该字段是电荷编码(0=中性,1=+1,2=-1等),而非连接关系。原子间的连接需要通过单独的键行定义,不能写在原子行中。
  • 缺少键行:V2000格式要求在所有原子行之后添加键行,明确原子间的连接方式和键级,你的molfile缺少这部分内容。

2. 正确的V2000 Molfile格式(以水分子为例)

3 2 0 0 0 0 0 0 0 0999 V2000
    0.0000    0.0000    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    1.0000    0.8144    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -0.8144    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  1  0  0  0  0
  1  3  1  0  0  0  0
M END

格式说明:

  • 计数行3 2 ...:第一个数3是原子总数,第二个数2是键的总数
  • 键行1 2 1 ...:表示原子1(O)和原子2(第一个H)之间是单键(第三个数字1代表单键),第二行键行对应O和第二个H的单键

3. 修正后的完整绘图代码

将molfile修正后,结合你提供的绘图逻辑,完整可运行代码如下:

from rdkit import Chem
from rdkit.Chem import AllChem, Draw
import matplotlib.pyplot as plt  

# 修正后的molfile字符串
molfile_string = """
3 2 0 0 0 0 0 0 0 0999 V2000
    0.0000    0.0000    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
    1.0000    0.8144    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
    0.0000   -0.8144    0.0000 H   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  1  0  0  0  0
  1  3  1  0  0  0  0
M END
"""

# 解析molfile
mol = Chem.MolFromMolBlock(molfile_string)

# 生成2D坐标并绘制图像
AllChem.Compute2DCoords(mol)
image = Draw.MolToImage(mol, size=(300, 300), kekulize=False)
plt.imshow(image, interpolation='nearest')
plt.axis('off')  # 关闭坐标轴标签
plt.show()

简便替代方案

如果不想手动编写molfile,也可以通过SMILES快速生成带氢的分子结构,代码更简洁:

from rdkit import Chem
from rdkit.Chem import AllChem, Draw
import matplotlib.pyplot as plt  

# 从SMILES生成分子并添加氢原子
mol = Chem.MolFromSmiles("O")
mol = Chem.AddHs(mol)

# 生成2D坐标并绘制图像
AllChem.Compute2DCoords(mol)
image = Draw.MolToImage(mol, size=(300, 300), kekulize=False)
plt.imshow(image, interpolation='nearest')
plt.axis('off')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:43:17