🔖

jupyter notebookで構造を書いてsmilesを取得する方法

2022/11/06に公開

panel-chemistryのインストール

以下のコードでpanel-chemistryをインストールします。

pip install panel-chemistry

ライブラリーの呼び出し

ライブラリーを呼び出します。

import panel as pn
from panel_chemistry.widgets import JSMEEditor

versionを出力させておきます。

pn.__version__

今回使用したのは、0.12.1でした。

JSME Editorの表示

# jsmeを設定
pn.extension("jsme", sizing_mode="stretch_width")
# smilesを入力していると、その構造が絵画されます。
smiles=""
# heightの数字を大きくすると、描ける範囲が大きくなります。
editor = JSMEEditor(value=smiles, height=400, format="smiles")
# 以下のコードでgoogle colabolatory上で表示させます。
pn.Column(editor, editor.param.value)
# valueに表示されるのが、描いた化合物のsmilesになります。

このコードを実行すると、以下のような画面が表示されます。

構造を描くとvalueのところに描いた構造のsmilesが表示されます。

右上の▼▲のマークをクリックするとsmiles以外のInchiやInchi keyなどにも変換できます。

たとえば、Copy as Inchiをクリックすると、以下の画面が表示されますのでCtrl-Cなどでcopyして使ってください

構造を入力して表示と編集

先程のコードの部分のsmiles=""の""間にsmilesを書くと、その構造があらかじめ書かれた状態でJSME editorが立ち上がります。すでにsmilesがわかっている構造を編集するときに便利です。
この例では、smiles="NC@@HC(=O)O"を書いています。

# jsmeを設定
pn.extension("jsme", sizing_mode="stretch_width")
# smilesを入力していると、その構造が絵画されます。
smiles="N[C@@H](CCC(=O)N[C@@H](CS)C(=O)NCC(=O)O)C(=O)O"
# heightの数字を大きくすると、描ける範囲が大きくなります。
editor = JSMEEditor(value=smiles, height=400, format="smiles")
# 以下のコードでgoogle colabolatory上で表示させます。
pn.Column(editor, editor.param.value)
# valueに表示されるのが、描いた化合物のsmilesになります。

注意点

google colabolartoryでも動くことは確認しましたが、動きが安定しなく表示されないときも多かったのでローカルで動かすときに使用したほうが良いと思います。
インターネットが使用できる環境ならば、JSMEのテストページなどを使って構造からsmilesに変換することも可能です。

JSMEのテストページ

インターネットが使える環境ならば、以下のテストページで書くこともできます。
https://jsme-editor.github.io/dist/JSME_test.html

JSMEの参考文献

https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-24

panel chemistryについて

https://github.com/awesome-panel/panel-chemistry

今回使用したコード

https://github.com/poclab-web/panel-chemistry/blob/main/panel_chemistry.ipynb

Discussion