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 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック