2006年06月15日

CDKで"rule of five"フィルタの作成 1

CDKには、"rule of five"フィルタを簡単に構築できるRuleOfFiveDescriptorクラスがあります。"rule of five"とは、Lipinskiにより提案された化合物のDrug-likeness(薬らしさ)を評価する方法の1つです。

RuleOfFiveDescriptorクラスでは、以下のように"rule of five"の各項目を満たさなければlipinskifailuresに1を加えています。すなわち、"rule of five"を全て満たした化合物は、lipinskifailuresが0となるわけです。

 if(xlogPvalue > 5.0) { lipinskifailures += 1; }
 if(acceptors > 10) { lipinskifailures += 1; }
 if(donors > 5) { lipinskifailures += 1; }
 if(mwvalue > 500.0) { lipinskifailures += 1; }
 if(rotatablebonds > 10.0) { lipinskifailures += 1; }

今回は、sdf形式のファイルを入力し、"rule of five"を満たす化合物のファイルを出力するプログラムを作成したいと思います。

 Usage: CDKex2 data.sdf data_passed.sdf

まずは、概略ですが、data.sdfに含まれる化合物を順次取り込むために、前回用いたMDLReaderクラスではなく、IteratingMDLReaderクラスを用います。

 IteratingMDLReader itr = new IteratingMDLReader(fr);
 while(itr.hasNext())
   mol =(Molecule)itr.next();

sdf形式のファイル中にH原子が付加されていない場合は、HydrogenAdderクラスを用いて付加できます。

 HydrogenAdder adder = new HydrogenAdder();
 adder.addExplicitHydrogensToSatisfyValency(mol);

"rule of five"の評価はRuleOfFiveDescriptorクラスのcalculate()メソッドにより実施し、getValue()メソッドを用いて前述したlipinskifailuresの値を取得します。

 RuleOfFiveDescriptor rule5 = new RuleOfFiveDescriptor();
 dv = rule5.calculate((AtomContainer)mol);
 IntegerResult ir = (IntegerResult)dv.getValue();
 if(ir.intValue() == 0)
   mw.writeMolecule(mol);

RuleOfFiveDescriptorクラスはちょっとクセ(問題)のあるクラスですので、これも含め、次回、実際のコードを用いてプログラムの解説をしたいと思います。



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


posted by わばのり at 08:49| Comment(0) | TrackBack(0) | CDK | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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