2006年08月02日

JOELibでfingerprint

JOELibを使って分子のfingerprintを作成したいと思います。fingerprintは以前pythonのcheminformaticsライブラリであるfrownsの記事でも取り上げました。JOELibでは、SSKey3DSクラスを用いてfingerprintを生成できます。生成されるfingerprintは54bitです。各bitが何を示すのかはココをご覧ください。

まずは、SSKey3DSクラスのgetDescInfo()メソッドを用いて、Descriptorの情報を調べます。

 SSKey3DS ssk = new SSKey3DS();
 DescriptorInfo di = ssk.getDescInfo();
 System.out.println(di.getName());
 System.out.println(di.getResult());

出力:
 Pharmacophore_fingerprint_1
 joelib.desc.result.BitResult

SSKey3DSはBitResultを返すことが分かりました。

それでは、実際にfingerprintの取得を行ってみます。fingerprintの計算は、calculate(JOEMol mol)メソッドで行います。戻り値であるDescResultはBitResultにキャストします。そして、maxBitSizeでfingerprintの長さ及びgetBinaryValue()メソッドで生成されたfingerprintを取得します。

 SSKey3DS ssk = new SSKey3DS();
 sreader.readNext(mol);
 DescResult result = ssk.calculate(mol);
 int fp_size = ((BitResult)result).maxBitSize;
 JOEBitVec br = ((BitResult)result).getBinaryValue();
 for(int i=0;i<fp_size;i++){
  if(br.get(i)){
   System.out.print("1");
  }else{
   System.out.print("0");
  }
 }

最後に、例として葉酸のfingerprintを生成したいと思います。

folic.png
               ↓
Fingerprint:
111001110000101100100010000100101010001011111111111111

以前メモしたScreeningAssistantのdiversity計算には、このSSKey3DSクラスで作成したfingerprintが利用されているようです。


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





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

広告


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

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

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