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

使用RDKit生成高清分子图像的技术问题及替代方案咨询

RDKit绘制高清分子结构及显示碳原子方案

一、生成2000×1000像素高清分子图像

1. 优化Draw.MolToImage参数

直接设置画布尺寸的同时启用fitImage=True这个关键参数,让分子结构同步缩放适配画布,避免仅放大画布、线条字体不跟进的问题:

from rdkit import Chem
from rdkit.Chem import Draw

mol = Chem.MolFromSmiles("CCO")
mol = Chem.AddHs(mol)
# 开启适配缩放,同步放大线条与字体
img = Draw.MolToImage(mol, size=(2000, 1000), fitImage=True)
img.save("high_res_mol.png")

2. 使用rdMolDraw2D的派生类(避免直接实例化MolDraw2D)

不能直接创建MolDraw2D实例,改用它的具体实现类(如MolDraw2DCairo),支持矢量绘图转高清位图,彻底避免像素化:

from rdkit import Chem
from rdkit.Chem.Draw import rdMolDraw2D

mol = Chem.MolFromSmiles("CCO")
mol = Chem.AddHs(mol)
# 初始化Cairo绘图器,指定分辨率
drawer = rdMolDraw2D.MolDraw2DCairo(2000, 1000)
# 手动调整字体大小适配大画布,数值可按需调整
drawer.SetFontSize(40)
drawer.DrawMolecule(mol)
drawer.FinishDrawing()
# 保存为高清图像
drawer.WriteDrawingText("high_res_mol_cairo.png")

3. 替代工具:PyMOL

如果RDKit的效果仍不理想,PyMOL可生成超高清分子图像:

import pymol
pymol.finish_launching()
pymol.cmd.load_smiles("CCO", "ethanol")
pymol.cmd.show("sticks")
pymol.cmd.set("ray_opaque_background", 0)
# 指定尺寸与dpi生成高清图
pymol.cmd.png("high_res_pymol.png", width=2000, height=1000, dpi=300)

二、显示碳原子

RDKit默认隐藏有机碳原子标签,可通过以下方式强制显示:

1. 用MolToImage自定义原子标签

生成所有原子的符号标签,强制显示碳原子:

from rdkit import Chem
from rdkit.Chem import Draw

mol = Chem.MolFromSmiles("CCO")
mol = Chem.AddHs(mol)
# 为每个原子设置标签,包括碳原子
atom_labels = {idx: atom.GetSymbol() for idx, atom in enumerate(mol.GetAtoms())}
img = Draw.MolToImage(mol, size=(2000, 1000), fitImage=True, atomLabels=atom_labels)
img.save("mol_with_carbon.png")

2. 用rdMolDraw2D开启全局原子标签显示

通过绘图选项设置显示所有原子标签,或单独指定显示碳原子:

from rdkit import Chem
from rdkit.Chem.Draw import rdMolDraw2D

mol = Chem.MolFromSmiles("CCO")
mol = Chem.AddHs(mol)
drawer = rdMolDraw2DCairo(2000, 1000)
opts = drawer.drawOptions()
# 开启所有原子标签显示
opts.showAtomLabels = True
# 可选:仅显示碳原子标签(注释掉上方showAtomLabels=True后启用)
# for atom in mol.GetAtoms():
#     if atom.GetSymbol() == "C":
#         opts.atomLabels[atom.GetIdx()] = "C"
drawer.DrawMolecule(mol)
drawer.FinishDrawing()
drawer.WriteDrawingText("mol_with_carbon_cairo.png")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:35:02