目標: ルイス/ケクレ構造の多くの SVG 画像を、PDF や PNG などの一般的な表示ファイルに表示される反応の首尾一貫したリストに整理できるようにしたいと考えています。つまり、各反応は、反応物と生成物が矢印またはその他の仕切りで区切られた 1 行を占める場合があり、特定のデータベースで各反応を表示するために必要な数の PDF のページに、同じ数の行が存在する可能性があります。
コンテキスト: pybel.readstring() を使用してローカル マシンから分子の正規の SMILES 表現を読み取り、その文字列を molSVG = mol._repr_svg_() を使用して SVG 文字列に変換し、その結果を display(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)
これらを表示する代わりにやりたいことは、それらをいくつかの単一の画像ファイルに保存することです。
試行された解決策: 過去 6 週間または 7 週間でかなりの数を実行したため、一部を忘れてしまいましたが、pybel の Outfile クラスを試しましたが、おそらく作成されたため、画像がまったく生成されなかったと思いますOBAtom および OBMol クラス オブジェクトのみを格納します。matplotlib.backends.backend_pdf からの Matplotlib の PdfPages は、複数の SVG を 1 つのファイルに入れるための最初のステップのように見えましたが、SVG ファイルではなく入力としてプロットが必要なため、失敗したと思います。svgwrite などのモジュールも見ましたが、動作させることができませんでした。
例として、完成品のページは、 間にある線や矢印のラベルなどの華やかさの一部がなくても、これと同様の構造を持つ場合があります。
また、注意点として、私はすべての形式のコーディング、特に Python について非常に経験が浅いため、できるだけ単純にしてください。どんな提案でも大歓迎です!