2006年06月13日

Pythonでケムインフォ:Fingerprint 2

FrownsでのFingerprintの使い方をメモしたいと思います。
 
 import frowns.Fingerprint

によりモジュールを読み込み、generateFingerprint関数によりFingerprintを生成します。

 def generateFingerprint(molecule, numInts=32, pathLength=7):

デフォルトでは、ビット長は32、部分構造のパス長が7となっています。
ここでは、生成したFingerprintを部分構造検索の前工程に利用するプログラムを作成致します。

プログラムの概要ですが、

1.
クエリー構造のFingerprintを作成する。ただし、ここでは、Smiles.smilinで変換可能なSMARTSパターンを入力すること。

2. #Fingerprint generation
標的となる化合物郡のFingerprintを全て生成し、dbリストに収める。

3. #Smarts Search
第3引数であるflagが1ならSMARTS検索の前工程としてFingerprint同士の一致を評価し、0なら評価しない。
その後、SMARTS検索。

実行例1:Fingerprintを利用しない。
$ python smartsearch2.py data.sdf "c1ccccc1OCCCCC" 0

出力:
C(=O)(O)c1c(OC(=O)CCCCC)cccc1
O(CCCCCCCCCCCC)c1ccc(C(=O)O)cc1
Time 4.43799996376
2 Hit compounds

実行例2:Fingerprintを利用する。
$ python smartsearch2.py data.sdf "c1ccccc1OCCCCC" 1

出力:
C(=O)(O)c1c(OC(=O)CCCCC)cccc1
O(CCCCCCCCCCCC)c1ccc(C(=O)O)cc1
Time 1.84400010109
2 Hit compounds

この例では、Fingerprintの利用により約2.4倍、検索速度のUPが確認できました。実際の検索システムでは、Fingerprintは化合物のデータベースへの登録時に、ビット文字列などで格納されることが多いと思います。

smartsearch2.py



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



 


posted by わばのり at 08:06| Comment(0) | TrackBack(0) | Frowns | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。