🔖
jupyter notebookで構造を書いてsmilesを取得する方法
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のテストページ
インターネットが使える環境ならば、以下のテストページで書くこともできます。
JSMEの参考文献
panel chemistryについて
今回使用したコード
Discussion