2006年07月06日

Morgan法でSMILESの規範化

先日、JOELibでMorgan法の利用法についてメモしました。今回は、Morgan法を利用してSMILESを規範化したいと思います。

まずは、JOESmilesParserクラスのsmiToMol(JOEMol mol, String smi, String title)メソッドを用いて、SMILESからmolへ分子構造情報を変換(入力)します。

 JOEMol mol=new JOEMol();
 String smiles_in = "c1ccc(O)cc1";
 if(!JOESmilesParser.smiToMol(mol,smiles_in,"test_data")){
  System.err.println("Could not loaded");
 }

あとは、前回と同様にMorganクラスを利用して再番号付けを行い、JOEMolクラスのtoString(IOType type)メソッドを用いてSMILESを出力します。ここで出力されるSMILESはMorgan法で再番号付けされた一義的なものですので、規範化されたSMILESといえます。

 Morgan morgan = new Morgan(new BasicTieResolver());
 if(morgan.calculate(mol)){
  JOEMol rmol = morgan.renumber(mol);
   if(!morgan.tieResolvingProblem()){
    String smiles_out = rmol.toString(IOTypeHolder.instance().getIOType("SMILES"));
    System.out.println(smiles_out);
  }
 }

例として、Frownの記事でも用いたフェノールの3つのSMILES表記を用いて規範化を行ってみます。

入力したSMILES:
 Oc1ccccc1
 c1ccccc1O
 c1ccc(O)cc1

出力されたSMILES:
 c1(O)ccccc1
 c1(O)ccccc1
 c1(O)ccccc1

全ての入力に対して、c1(O)ccccc1が出力されました。

今回はJOELibに実装されているMorgan法で規範化を行いましたが、規範化のアルゴリズムが異なれば出力されるSMILESも異なりますので、注意が必要です。


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


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

広告


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

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

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