Сохранение и организация нескольких файлов.svg в многостраничный PDF, PNG или другие распространенные типы файлов изображений в Python

Цель: я хочу иметь возможность систематизировать многие SVG-изображения структур Льюиса / Кекуле в единый список реакций, отображаемый в каком-то обычном файле просмотра, например PDF или PNG; то есть каждая реакция может занимать одну строку с реагентами и продуктами, разделенными стрелкой или каким-либо другим делителем, и на таком количестве страниц PDF будет столько строк, сколько необходимо для отображения каждой реакции в данной базе данных.

Контекст: я читаю канонические представления SMILES молекул с моего локального компьютера с помощью pybel.readstring(), преобразую эту строку в строку SVG с помощью molSVG ​​= mol._repr_svg_(), а затем отображаю результаты в блокноте Jupyter с дисплеем (SVG(molSVG)) при сохранении строки SVG в список и файл.svg. Например:

import pybel as pb
from IPython.display import display, SVG

molecules = []

# Read in canonical SMILES to some tractable object.
mol = pb.readstring('smi', '[O-][C]([C]1[CH][CH][CH][O]1)[O]')

# Convert it to an SVG string
molSVG = mol._repr_svg_()

# Display the SVG.
display(SVG(molSVG))

# Save the SVG to an .svg file and a list
with open('out.svg', 'w+') as result:
    result.write(molSVG)
molecules.append(result)

Что бы я хотел сделать вместо их отображения, это сохранить их в какой-нибудь отдельный файл изображения.

Попытки решения: за последние шесть или семь недель я пробежал довольно много, поэтому я забыл кое-что, но я попробовал класс pyf's Outfile, но я не думаю, что он создавал какие-либо изображения, как это было, вероятно, сделано для хранить исключительно объекты класса OBAtom и OBMol. PdfPages Matplotlib из matplotlib.backends.backend_pdf выглядел как первый шаг к получению более чем одного SVG в одном файле, но я думаю, что это не удалось, потому что он требует графиков в качестве входных данных, а не файлов SVG. Я также видел такие модули, как svgwrite и тому подобное, но не смог заставить их работать.

Например, страница готового продукта может иметь структуру, подобную этой, хотя и без некоторых расцветок, таких как линии между ними и метки на стрелках.

Кроме того, просто примечание: я крайне неопытен во всех формах кодирования, особенно в Python, поэтому, пожалуйста, сделайте это как можно более простым для меня. Любые предложения с благодарностью!

0 ответов

Другие вопросы по тегам