2006年09月12日

Epydoc

mmlibのAPI Documentをよく見ると、"Generated by Epydoc"という文字がありました。早速、Epydocをインストールして、MMTKのAPI Documentを作成してみました。

1. Epydocのサイトからepydoc-3.0alpha3.win32.exeを取得し、インストール。

2. MMTKのAPI Documentの作成
 
 > cd C:\Python23\Scripts
 > python epydoc.py --html MMTK -o mmtk_docs

この操作で、C:\Python23\Scriptsの下にmmtk_docsができます。その下にあるindex.htmlを開くと以下の画面が表示されます。


epydo.png

epydocすばらしい!


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

2006年09月11日

The Python Macromolecular Library (mmLib)

mmlibというPythonの拡張ライブラリがあります。APIを見るとmmCIFとPDBのparserだけではなく、重ね合わせや、TLS modelsによる解析ができるみたいです。TLS modelsについては以下の論文で報告されています。

Acta Cryst. D61,465-471

このようなPythonのAPI Referenceってどうやって作っているのでしょう?Javadocみたいなツールがあるのかな?調べてみます。


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

2006年09月08日

JOELibでShortest Path Length Matrix

JOELibでは、DistanceMatrixクラスを使うことにより、原子ペア間の最短パス長を要素として持つMatrixを取得することができます。

 DistanceMatrix dm = new DistanceMatrix();
 int m[][]=null;
 try {
  DescResult result = dm.calculate(mol);
  m = ((IntMatrixResult)result).value;
 } catch (DescriptorException e) {
  e.printStackTrace(); 
 }

特に、トポロジカルなatom pair descriptorsを自作する際に便利な機能だと思います。


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

2006年09月07日

JOELibでAtomTypeの変換

JOELibでは、JOETypeTableクラスを使うことにより、AtomTypeの変換を行うことができます。例として、mol2形式のAtomTypeである'N.3'をmm2形式のAtomTypeへと変換してみます。

 JOETypeTable jtt = JOETypeTable.instance();
 jtt.setFromType("SYB");
 jtt.setToType("MM2");

 String atom_type = jtt.translate("N.3");
 System.out.println("N.3 -> "+atom_type);

実行結果:
 N.3 -> 8

mol2の'N.3'はmm2では'8'と変換されました。
変換自体は、joelib/data/plain/types.txtを参照して行われているようです。このtypes.txtはいろいろと参考になると思います。


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

2006年09月06日

MSDChem

EMBL-EBIで公開されているMSDChemはPDB中の低分子を検索できるサービスです。この中で使われている部分構造検索はJavaで実装されているらしく、以下のサイトでライブラリとそのAPIが公開されています。Oracle cartrigeとしても利用できるようです。便利ですね。

http://www.ebi.ac.uk/msd-srv/docs/moldoc/help.html


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

2006年09月05日

CDKとJOELibの連携 その2

CDKでorg.openscience.cdk.libio.joelib.Convertorクラスを用いるためには、joelib.jarを含めてコンパイルする必要があります。

基本的なコンパイルの手順は、以下のとおりです。

1. cdk-source-20060714.tar.gzを展開する。

2. コンパイルの実行:

 cdk-source-20060714> ant dist-large

この操作で、cdk-source-20060714\dist\jarの下にcdk-svn-2006XXXX.jarができます。

joelib.jarを含めてコンパイルするためには、cdk-source-20060714\jar\libio下にjoelib.jarを置いて、コンパイルするだけでOKだと思ったのですが、コンパイルできませんでした。

 cdk-source-20060714> ant info

によると、"JOELib found: true" になっているので、認識はされているはずなのですが.... 私はantのbuild.xmlをまともに理解できないため、ここで断念しました。

とりあえず、Convertorクラスを使うために、以下の手順を取りました。

1. cdk-source-20060714\src\org\openscience\cdk\libio\joelibの下にConvertor.javaがあるので、適当なフォルダにコピーする(ここではC:\work)。

2. クラスパスにcdk-20060714.jarとjoelib.jarを加えて、Convertor.javaのコンパイルを実行。

 C:\work> javac Convertor.java
 
ただし、Convertor.javaを以下のように修正した。

36行目:
org.openscience.cdk.Element e = ef.getElement(atom.getAtomicNum());
-> org.openscience.cdk.Element e = (Element)ef.getElement(atom.getAtomicNum());

173行目:
convertedBond.setBegin(convert(bond.getAtomAt(0)));
-> convertedBond.setBegin(convert((Atom)bond.getAtomAt(0)));

174行目:
convertedBond.setEnd(convert(bond.getAtomAt(1)));
-> convertedBond.setEnd(convert((Atom)bond.getAtomAt(1)));

252行目:
converted.addAtom(convert(mol.getAtomAt(i), coordType));
-> converted.addAtom(convert((Atom)mol.getAtomAt(i), coordType));

import org.openscience.cdk.Element の追加

この操作で、Convertor.classができる。

3. Convertor.classをcdk-20060714.jarに加える。

 > mkdir tmp
 > copy cdk-20060714.jar tmp
 > cd tmp
 > jar xvf cdk-20060714.jar
 > mkdir org\openscience\cdk\libio\joelib
 > copy C:\work\Covertor.class org\openscience\cdk\libio\joelib
 > rm cdk-20060714.jar
 > jar cvf cdk-new.jar *

jarのオプションを使えば、もう少しスマートな方法があると思いますが、今回はこのように行いました。

以上の操作で作成されたcdk-new.jarを用いれば、Convertorクラスが利用できます。


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

2006年09月04日

Implicit HydrogenとExplicit Hydrogen

Implicit HydorgenとExplicit Hydorogenの違いをJOELibを使って確認したいと思います。

例として、エタンを用います。Ethane 1はmol形式中に水素原子を含んでおり、Ethane 2は含んでいません。

ethane2.png

 for(int i=1;i<=mol.numAtoms();i++){
  JOEAtom atom = mol.getAtom(i);
  if(!atom.isHydrogen()){
   System.out.println("Atom: "+i);
   int imp_H = atom.implicitHydrogenCount();
   int exp_H = atom.explicitHydrogenCount();
   System.out.println(" Implicit Hydrogen: "+imp_H);
   System.out.println(" Explicit Hydrogen: "+exp_H);
  }
 }

ethane 1の実行結果:
 Atom: 1
  Implicit Hydrogen: 3
  Explicit Hydrogen: 3
 Atom: 2
  Implicit Hydrogen: 3
  Explicit Hydrogen: 3

ethane 2の実行結果:
 Atom: 1
  Implicit Hydrogen: 3
  Explicit Hydrogen: 0
 Atom: 2
  Implicit Hydrogen: 3
  Explicit Hydrogen: 0

Implicit Hydrogenの算出は、水素原子を座標情報として明確に考慮する必要がない処理において、役に立つ機能ですね。


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

2006年09月03日

CDKのPathToolsクラス

CDKのPathToolsクラスはmolecular graphsを処理するために利用できる便利なクラスです。今回は、このクラスのメソッドの1つであるgetAllPathsメソッドを利用して、任意の原子Aから原子Bまでの全ての経路を列挙させてみます。

例として、以下の分子の原子6から原子10までの全経路を列挙してみます。
path.png

 IAtom atomA = mol.getAtomAt(5);
 IAtom atomB = mol.getAtomAt(9);
 List all_path = PathTools.getAllPaths(mol,atomA,atomB);
 for(int i=0;i<all_path.size();i++){
  List path = (List)all_path.get(i);
  for(int j=0;j<path.size();j++){
   IAtom atom = (IAtom)path.get(j);
   System.out.print(mol.getAtomNumber(atom)+1+",");
  }
 System.out.println();
 }

 実行結果:
 6,4,7,1,8,2,10,
 6,4,7,1,8,2,3,9,5,10,
 6,4,3,9,5,10,
 6,4,3,2,10,

このような経路情報は、descriptorの計算などに利用できます。また、このクラスのcomputeFloydAPSP(int[][] C)メソッドを用いれば、全ての原子間の最短経路長が取得でき便利です。


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

2006年09月02日

CDKとJOELibの連携

CDKではorg.openscience.cdk.libio.joelib.Convertorクラスを用いることにより、CDKのMoleculeをJOELibのJOEMolへと変換、及びその逆の変換も可能となります。ただし、binary配布にはこのクラスは含まれていませんので、sourceからjoelib.jarを含めてコンパイルする必要があります。

実際に、Molecule->JOEMol, JOEMol->Moleculeへと変換を行ってみます。

cdk_joelib.java:


変換といっても基本的には、atomとbondをaddしているだけですので、自分でConvertorクラスを作成してもいいと思います。


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

2006年09月01日

CDKでねじれ角の計算

CDKで結合原子距離、結合角、ねじれ角の計算を行ってみます。これらの値は、分子力場計算には必須ですね。CDKでは、ForceFieldToolsクラスを用いてこれらの値を取得できます。


 GVector gv = ForceFieldTools.getCoordinates3xNVector(mol);

 double bond_length = ForceFieldTools.distanceBetweenTwoAtomsFrom3xNCoordinates(gv, 0, 1);
 double angle1_3 = ForceFieldTools.angleBetweenTwoBondsFrom3xNCoordinates(gv, 0, 1, 2);
 double torsion_angle = ForceFieldTools.torsionAngleFrom3xNCoordinates(gv, 0, 1, 2, 3);

 System.out.println("Bond length: "+bond_length);
 System.out.println("Angle1_3: "+angle1_3);
 System.out.println("Torsion angle "+Math.toDegrees(torsion_angle));

tor.png

結合角はdegreeで返ってきますが、ねじれ角はradianで返ってくるので注意が必要です。


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