Lightweight Language(LL)で手軽にケムインフォマティクスのライブラリを使いたい。研究現場でプログラムを書いているとこんなことをよく思います。他のLLでも同様のことが言えるかもしれませんが、Pythonには、cheminformatics toolkitである
Frownsが公開されています。この他にも例えば、ケモメトリックス/統計では
PyChem/
PyRが、分子モデリングでは、
MMTK、
PyQuanteが、分子グラフィクスでは、
PyMol、
Chimeraなどが公開されています。商用でも有益な製品が多く販売されています。これらを使えば、ちょっと思いついたアイデアを短時間に実装/テストができ便利ですね。
さて、今回は、cheminformatics toolkitである
Frownsについてメモしたいと思います。
Windowsでのインストール方法(Linux上でもほぼ同様です):
Frownsのサイトよりfrowns-0.9a.zipを入手する。
http://frowns.sourceforge.net/Python2.2以上を事前にインストールしてください。
パスを通すのをお忘れなく!
適当なフォルダでfrowns-0.9a.zipを解凍。
解凍したフォルダに移動し、以下のコマンドをコマンドプロンプト上で実行する。
> python setup.py build
> python setup.py install
インストールの完了!
次に例として簡単なスクリプトを書いてみます。
ここでは、Smiles.smilinを用いてSMILESを入力し、arbsmiles()及びcansmiles()でそれを出力しています。前者は、入力されたSMILESをそのまま出力し、後者は規範化して出力します。
SMILESは、同じ分子を複数の表現方法で示すことができ、今回入力しているSMILESは全て同じ分子(フェノール)を示しています。したがって、cansmiles()では規範化され全て同じSMILESとなって出力されています。残念ながらOELibにはCanonical SMILESはまだ実装されていません。RoadMapにはのっていますが。
規範化といえば、データベース検索における重要な技術の一つであり、Morgan法があまりにも有名ですね。Morgan法は次の機会にでもメモしたいと思っています。
-------------------------------------------------------
ソースプログラム:test.py
from frowns import Smiles
mol1 = Smiles.smilin("Oc1ccccc1")
mol2 = Smiles.smilin("c1ccccc1O")
mol3 = Smiles.smilin("c1ccc(O)cc1")
print 'mol1:Smiles ' + mol1.arbsmiles()
print 'mol2:Smiles ' + mol2.arbsmiles();
print 'mol3:Smiles ' + mol3.arbsmiles();
print ''
print 'mol1:Canonical Smiles ' + mol1.cansmiles()
print 'mol2:Canonical Smiles ' + mol2.cansmiles();
print 'mol3:Canonical Smiles ' + mol3.cansmiles();
-------------------------------------------------------
実行:
> python test.py
-------------------------------------------------------
出力:
mol1:Smiles Oc1ccccc1
mol2:Smiles c1ccccc1O
mol3:Smiles c1ccc(O)cc1
mol1:Canonical Smiles c1(ccccc1)O
mol2:Canonical Smiles c1(ccccc1)O
mol3:Canonical Smiles c1(ccccc1)O
-------------------------------------------------------

人気ブログランキング(クリックして応援してね)