2009年12月2日水曜日

OpenBabel : Frameworkerを作ろう

Frameworkを作るためには化合物の「Ring」と「Linker」を明確に分ける必要があります。
でも私の環境でこの「Linker」を認識するのはISIS Baseしかなく、他のシステムへの実装がちょっと難しい。

で、OpenBabel+VisualStudio2008(C#)でこの「FrameWorker」を作っています。

考え方としてはこんな感じ。


  1. 化合物をSmilesで表記する
  2. Smartsを「aA」とする
  3. 化合物をこのSmartsにかけると、Aromatic any atom - Aliphatic any atomで切れる。つまり芳香環とLinkerまたは側鎖の間が切れる
  4. 構造を完全に切ってしまうのではなく、「切れ目」の状態で化合物を保持しておく
  5. 切れ目を参考にして、化合物を「Fragment」に分ける
  6. 切れ目を参考にして、FragmentとFragmentを連続的につないでいく。このとき、Fragmentと隣り合うFragmentを管理しておくと、一つのFragmentから連続的につながった部分構造が取れる
  7. Aromatic Ringをスタートとして奇数セット(3Fragment、5Fragment・・・)とつないでいけばAromatic ~Aliphatic ~Aromatic の順で部分構造が取れる。すなわちこれがひとつの「Framework」になる
  8. 重原子の種類を無視する場合は、処理後にすべての原子をa,Aなどに置き換えれば、あとですぐSmartsに変更できる
この考え方でOpenBabelを使ったFrameworkerを作りつつあります。今のところ6.の途中までできました。明日は7.まで行って動作確認します。

でも、ちょっと問題が・・・。化合物の構造を舐めまくるのでforeachの嵐になってます。実運用したときに処理時間が結構長くなりそうで怖い。

0 件のコメント: