2006年08月31日

CDKでTanimoto coefficient

cdk-20060714には、新たにorg.openscience.cdk.similarityパッケージが追加されています。この中にあるTanimotoクラスを用いて、2つのFingerprintからTanimoto係数を計算してみます。

 Fingerprinter fp = new Fingerprinter();
 try {
  BitSet fing1 = fp.getFingerprint(mol1);
  BitSet fing2 = fp.getFingerprint(mol2);
  float dist = Tanimoto.calculate(fing1,fing2);
  System.out.println("Tanimoto Coefficient = " + dist);
 } catch (Exception e) {
  e.printStackTrace();
 }

注意が必要なところは、cdk-20050826では、FingerprinterクラスのgetFingerprint(AtomContainer ac)メソッドはstaticであったのに対し、cdk-20060714ではstaticではないところです。Tanimoto係数自体は自分で書いても簡単に実装できますが、今後org.openscience.cdk.similarityパッケージに様々な係数が追加されることを期待しています。


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

2006年08月30日

EclipseでGroovy

GroovyのEclipse Pluginのインストールメモです。

Eclipse Pluginのインストール:
1. Eclipse(3.2)を起動し、[Help]→[Software Updates]→[Find and Install]

2. Search for new features to installを選択し、Nextボタンを押す。

3. New Remote Siteボタンを押し、新しく開くダイアログに以下の情報を入力し、Finishボタンを押す。

Name : Groovy Site
URL: http://dist.codehaus.org/groovy/distributions/update/

4. Groovy Siteをチェックし、Nextボタンを押す。

5. 後は、ライセンスに関する質問などに答え、進んでください。

実行例:
1. [File]→[New]→[Project]でJava Projectを選択しNextボタンを押す。

2. Project name(ここでは、TestGrPro)を入力しFinishボタンを押す。

3. Package Explorer内のTestGrProを選択し、右クリックする。そして、[New]→[Other]→[Groovy]→[Groovy Class]を選択し、Nextボタンを押す。

4. Name:(ここでは、TestGr)を入力し、Finishボタンを押す。そうするとTestGr.groovyファイルに以下のようなclassの雛形が作成されます(青字は私が追加したもの)。

 class TestGr {

  static void main(args) {
   print "Hello World!"
  }

 }

5. [Run]→[Run]→[Groovy]を選択し、Newボタンを押す。

6. Main classをSearchし、Runボタンを押す。

 Hello World!

と無事実行されました。


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

2006年08月29日

CDKでSSSR その2

前回、CDKを用いてSSSRの検出を行い、各ringをsdf形式で保存しました。今回は、以下のように結合しているring同士は1つのfragmentとして取り扱い、sdf形式で保存したいと思います。

sssrpa.png

まずは、SSSRFinderクラスのfindSSSR()メソッドを用いて、SSSRの検出を行います。SSSRはIRingSetとして取得します。ここまでは、前回と同じです。

 SSSRFinder sssrf = new SSSRFinder(mol);
 IRingSet rs = sssrf.findSSSR();

次にRingPartitionerクラスのpartitionRings(IRingSet ringSet)メソッドを用いて、結合しているring同士を1つのRingSetとし、Vectorで結果を取得します。

 Vector rings = RingPartitioner.partitionRings(rs);

最後に、convertToAtomContainer(IRingSet ringSet)メソッドを用いて、RingSetをAtomContainerへと変換し、ファイル出力します。

 for(int i=0;i<rings.size();i++){
  IRingSet crs = (IRingSet)rings.get(i);
  IAtomContainer ac = RingPartitioner.convertToAtomContainer(crs);
  try {
   mw.write(new Molecule(ac));
  } catch (CDKException e) {
   e.printStackTrace();
  }
 }


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

2006年08月28日

GroovyでCDK

Groovyは“Javaのためのスクリプト言語”ともいえるスクリプト言語らしく、文法自体もJavaに類似していることから、Javaユーザであれば、容易にGroovyを利用できると思います。PythonやRubyは使えないけど、スクリプトでCDKを利用したいというJavaユーザの方にお勧めです。

インストール:
@Groovyのダウンロード
Groovyを以下のサイトからダウンロードします。
http://groovy.codehaus.org/Home
今回は、groovy-1.0-jsr-06.zipを取得し、Windows上の適当なフォルダ下に展開します。

A環境変数の設定1
以下の3つの環境変数を適切に設定してください。
JAVA_HOME
GROOVY_HOME
PATH (%GROOVY_HOME%binを追加する)

B環境変数の設定2
環境変数CLASSPATHにcdk-20060714.jarを追加。

これで、インストールは完了です。
例として、先日作成したSSSRのsdf出力プログラムをGroovyで作成してみます。

sssr.groovy:


実行:
> groovy sssr.groovy input.mol output.sdf

ずいぶんプログラムが短くなりました。Javaとほとんど同じ感覚でプログラムできますね。


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

2006年08月27日

グラフ理論入門

ケムインフォマティクスを学習する上でグラフ理論の理解は重要な項目の一つだと思います。私はソースコード付きの書籍を好んで買うのですが、実際にサンプルプログラムを動かしながら学習する方が理解しやすいからです。

グラフ理論関連の出版物で私の一番のお勧めはC MAGAZINE 2005年2月号です。

書籍としては、「グラフ理論入門 C言語によるプログラムと応用問題」です。


ちなみに、Pythonでは、NetworkXなどのgraph libraryがあります。
それにしても「C MAGAZINE」の休刊は本当に残念です。


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

2006年08月26日

JRubyでCDK

CDKのmailing listで知ったのですが、JRubyでCDK及びOctetを用いたソースコードが公開されています。

(CDK)
http://depth-first.com/articles/2006/08/24/scripting-cdk-with-jruby

(Octet)
http://depth-first.com/articles/2006/08/23/scripting-octet-with-jruby

恥ずかしながらJRuby知りませんでした。
CDK利用できるのですね。すばらしい!!


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

2006年08月25日

CDKでSSSR

CDKでSmallest Set of Smallest Rings(SSSR)の検出を行い、各ringをsdf形式で保存したいと思います。

まずは、SSSRFinderクラスのfindSSSR()メソッドを用いて、SSSRの検出を行います。SSSRはIRingSetとして取得します。

 SSSRFinder sssrf = new SSSRFinder(mol);
 IRingSet rs = sssrf.findSSSR();

次に、各ringをIRingSetから取り出す作業を行います。
IRingSetはISetOfAtomContainersのサブインターフェースです。ここでは、ISetOfAtomContainersのメソッドであるgetAtomContainer(int number)とgetAtomContainerCount()を用いて各ringを取り出し、ファイル出力を行っています。

 for(int i=0;i<rs.getAtomContainerCount();i++){
  IAtomContainer ac = rs.getAtomContainer(i);
  try {
   mw.write(new Molecule(ac));
  } catch (CDKException e) {
   e.printStackTrace(); 
  }
 }

以下のように各ringに分割されたものがsdf形式で出力できます。

sssr.png
(今回用いたcdkはcdk-20060714です)


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

2006年08月24日

みんなのPython

久々にPython関連書籍が発売されていたので、早速、購入して読んでみました。「みんなのPython」はPythonをこれから学習したい方の入門書として適しているばかりでなく、私のように中途半端にPythonを理解したつもりで利用しているユーザにとっても、再学習するための非常によい書籍であると思います。



MMTK、frowns、OpenBabelを使って、これからケムインフォプログラミングを始めたい方は、まず「みんなのPython」でPythonに十分慣れてからトライするといいと思います。


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

2006年08月23日

MMTK: Normal Mode Calculation

MMTKを使ってNormal Modeの計算を行ってみます。Energy Minimizationの後、以下の作業で計算できます。

 #Normal Modes
 modes = NormalModes(universe)

 #Print mode
 for mode in modes:
  print mode

 #View
 view(modes[6])

ここでは、以下のモジュールのimportが必要となります。

 from MMTK.NormalModes import NormalModes

最後のviewで各モードを分子Viewerで視覚化でき、とても便利なのですが、Windows上で実施する場合、いくつか注意点があります。まずは、環境変数PDBVIEWERに分子Viewerの名前を指定します。現在は、アニメーション表示可能なViewerとしてXmolとVmdをサポートしているようです。ここでは、vmdと設定します。そうすると、MMTKは、Tempフォルダ下にvmd script、pdb、dcdの3つのファイルを出力します(Tempフォルダは、環境変数で各自設定されている場所です。通常はLocal Settingsフォルダ下だと思います)。

うまく動作すれば、vmdが自動起動され、vmd scriptを読み込み、アニメーション処理となるのでしょうが、私の環境?では、vmdが一瞬起動し、終了してしまいます。vmd scriptを見るとファイルの指定が以下のようになっていました。

 c:\temp\tmpbjpved

このファイル指定を以下のように変更します。

 c:\\temp\\tmpbjpved

変更後、vmdを立ち上げ、プロンプトからscriptを実行すれば、アニメーションが無事、表示されます。


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

2006年08月22日

Mathematicaによる量子物理学

最新の書籍というわけではないのですが、「Mathematicaによる量子物理学」は、Mathematicaにより関数の形を視覚化しながら、量子物理学を学べる良書だと思います。



学生の頃、指導教官からMathematicaとMatlabを研究ツールとして使いこなせるように課題をたくさんもらったのですが、当時はあまり興味がなく、ほとんど課題をクリアできませんでした。今更ながら、これらツールの有用性が分かる気がします。

最近は、ScilabとOctaveをもう少し使いこなしたいなっと思いながらも、ほとんど進んでいません。学生時代と変わってませんね(笑)。


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