RDKit MolToImage生成不同尺寸图像时键宽与元素标签缩放不一致问题
关于RDKit MolToImage生成分子图像的缩放一致性问题
我发现使用RDKit的MolToImage生成分子图像时,size参数会导致键宽和元素标签的缩放不一致:图像尺寸越大,线条越细、元素标签越小。我通过逐步增大尺寸生成同一分子的图像,将其缩放至(600,600)后合成为GIF验证了该问题(GIF效果显示:初始尺寸越大,最终缩放后的分子线条越细、元素文字越小)。
测试代码如下:
from glob import glob from rdkit import Chem from rdkit.Chem import Draw from PIL import Image,ImageDraw,ImageFont def make_frames_from_smi(smi): for i in range(10): s = (i+3)*100 mol = Chem.MolFromSmiles(smi) img = Draw.MolToImage(mol,size=(s,s)) img = img.resize((600,600)) draw = ImageDraw.Draw(img) text = '%d: Initial Size: (%d,%d)'%(i+1,s,s) font_size = 40 font = ImageFont.truetype("arial.ttf", font_size) # Use your desired font # Calculate text position image_width, image_height = img.size text_x = (image_width - (bbox[2] - bbox[0])) // 2 text_y = 20 # Adjust the vertical position as needed draw.text((text_x, text_y), text, font=font, fill='black') img.save('%03dtest.png'%i) def make_gif_from_frames(paths): frames_paths = glob(paths) frames = [Image.open(imgp) for imgp in frames_paths] frames[0].save("mols.gif", format="GIF", append_images=frames, save_all=True, duration=500, loop=False) # make RDKit mol obj. smi = 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O' make_frames_from_smi(smi) make_gif_from_frames('*.png')
请问:
- 这是预期行为吗?
- 键宽是否保持固定像素值?
- 如何生成比例一致的图像?
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

