Изображение RDKit MolToImage непоследовательно масштабирует ширину связей и метки элементов для разных размеров изображеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Изображение RDKit MolToImage непоследовательно масштабирует ширину связей и метки элементов для разных размеров изображе

Сообщение Anonymous »

Я заметил, что когда я создаю изображение молекулы в RDKit, аргумент size приводит к несогласованному масштабированию ширины связи и меток элементов. Чем больше размер, тем тоньше линии и меньше метки элементов.
Я провел тест, создав изображение той же молекулы с помощью MolToImage с постепенно увеличивающимся размером. размеры. Я изменил масштаб этих изображений до размера = (600,600), а затем объединил их в 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')
Это ожидаемое поведение? Сохраняется ли ширина связи постоянной для определенного абсолютного значения пикселей? Как я могу создать эти изображения с одинаковыми пропорциями независимо от ширины/высоты пикселей?


Подробнее здесь: https://stackoverflow.com/questions/768 ... tently-for
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»