2006年07月23日

CDKでMaximum Common Substructure

CDKで最大共通部分構造(Maximum Common Substructure:MCS)を検出する方法をメモしたいと思います。
MCSは、UniversalIsomorphismTesterクラスを用いて検出します。検出の流れを下図に示しています。まずは、getOverlaps(mol1,mol2)を用いて、Common Substructureを取得します。ここではmol1をTarget Structure、mol2をQuery Structureとします。

 List mcs_list = UniversalIsomorphismTester.getOverlaps(mol1,mol2);

次に、Common Substructureの入ったmcs_listの中から原子数が最大のものを検索します。これがMCSとなります。

 AtomContainer mcs_mol = (AtomContainer)mcs_list.get(0);
 int mcs_size = mcs_mol.getAtomCount();
 for(int i=1;i<mcs_list.size();i++){
  AtomContainer tmp_mol = (AtomContainer)mcs_list.get(i);
  if(tmp_mol.getAtomCount()>mcs_size){
   mcs_mol = tmp_mol;
   mcs_size = tmp_mol.getAtomCount();
 }
 mw.write(new Molecule(mcs_mol));

MCS.png



banner_02.gif
人気ブログランキング(クリックして応援してね)
posted by わばのり at 12:19| Comment(0) | TrackBack(0) | CDK | このブログの読者になる | 更新情報をチェックする

広告


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

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

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