2006年08月01日

CDKでASAの計算

Acessible Surface Area(ASA)の計算を行ってみます。CDKでは、NumericalSurfaceクラスを用いてASAの計算ができます。デフォルトの溶媒半径は1.4Åです。一般的に解析的な計算手法と比較して精度は落ちますが、計算速度が速いという特徴があります。

まずは、AtomContainerを引数にしてインスタンスを作成します。

 NumericalSurface ns = new NumericalSurface(mol);

ASAの計算は、calculateSurface()メソッドで実施します。

 ns.calculateSurface();

最後に、getTotalSurfaceArea()メソッドによりASAを出力します。

 System.out.println("Total ASA: "+ns.getTotalSurfaceArea());

原子ごとのASAがほしい場合は、getSurfaceArea(int atomIdx)メソッドを用います。

 for(int i=0;i<mol.getAtomCount();i++){
 try {
  double atom_asa = ns.getSurfaceArea(i);
  System.out.println("Atom "
     + (i+1)
     + " "+atom_asa);
 } catch (CDKException e) {
  e.printStackTrace();
 }

例として、ALAのASAを計算してみます。

ASA.png

出力:
Total ASA: 371.2141660913026
Atom 1 19.422585694045885
Atom 2 5.849449171443343
Atom 3 30.096359446619783
Atom 4 12.202076766236653
Atom 5 65.96169616886122
Atom 6 47.21116324776361
Atom 7 30.572670707796863
Atom 8 26.5907020193718
Atom 9 16.790634636192344
Atom 10 23.64846959959106
Atom 11 31.103599866253536
Atom 12 24.997914544001777
Atom 13 36.766844223124735


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

2006年07月31日

Vigyaan

Vigyaanは、CD-ROMのみでブートできるKNOPPIX(Linux)に以下の様なbio/chemical software群を含めたもので、ISOイメージとして公開されています。

Ghemical, Jmol, MPQC, Open Babel, PSI3, Rasmol, XDrawChem, Artemis, Bioperl, ClustalX, Cn3D, EMBOSS, Garlic, Glimmer, GROMACS,GP/Arka, MUMmer, NCBI tools, NJPlot などなど

利用法:
Vigyaanのサイトから、VigyaanCD-v1.0.isoをダウンロードし、CD-ROMを作成します。ISOイメージからCD-ROMの作成方法は以下のサイトが参考になります。

http://pocketstudio.jp/win/iso/cdrom.html

CD-ROMが作成できれば、あとは、CD-ROMからブートするだけです。上記ソフトウェアはメニューから使える状態になっています。Screenshotsを見るとVigyaanの概要がイメージできると思います。

インストールが苦手な方やソフトウェアを試しに使ってみたい方などにお勧めです。


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

2006年07月30日

BALLView

久しぶりにBALL(Biochemical Alrorithms Library)のHPを見ると、BALLViewという分子Viewerが公開されていました。操作も簡単で以下のようなグラフィクスが描けます。

ball_view1.png

Galleryを見るとなかなかきれいなグラフィクスが描けることが分かります。
しかもスクリプトはPythonなのでこれもGOODです。

BALL自体は、C++で書かれた分子モデリング用のライブラリで、Max Planck Instituteで開発がスタートされたものです。非常に有益なライブラリだと思いますので、後日メモしたいと思います。


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

2006年07月29日

Cheminformatics.org

利用されている方も多いと思いますが、Cheminformatics.orgではQSAR, QSPR BBB penetration等のdatasetsが公開されています。sdfとして公開されたいるdatasetもあり、とても便利だと思います。これらは、論文でPublishされたものですので、論文の結果を見ながら先日紹介したSNNSでのモデリングの練習にも利用できると思います。また、Cheminformatics Linksもよくまとまったリンク集だと思います。


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

2006年07月28日

Stuttgart Neural Network Simulator その2

実際にJavaNNSを動かしてみます。C:\Java\JavaNNS-Win以下にexamplesフォルダがあると思いますが、このフォルダの中に様々な例となるファイルが置かれています。今回は、manualでも取り上げられていますが、exampleファイルを使ってXOR回路の構築を試してみたいと思います。
XORの真理値表は以下のとおりです。

 X Y Z
 0 0 0
 0 1 1
 1 0 1
 1 1 0

1. JavaNNSを起動し、[File]->[Open]からexamplesフォルダにあるxor.netをOpenすると以下の画面が表示されます。同様に、xor.patもOpenします。ここで、xor.netには、NN自体の情報が保存されており、xor.patには、入力/出力データが保存されています。

SNNS_2.png

2. 解析に重要ないくつかのWindowを開きます。
 NNの構築等を制御するパネル:[Tools]->[Control Panel]
 学習過程(誤差)を確認できるグラフ:[View]->[Error graph]
 Logの出力:[View]->[Log]

3. 学習を始めます。[Control Panel]の[Init]ボタンを押しWeightの初期化を行います。次に、[Learning]タブを開き、[Learning function]リストからBackpropagationを選択し、Cyclesを4000とします。そして、[Learn All]ボタンを押します。

SNNS_3.png

おお!2500 cycleあたりから急激に誤差が少なくなっています。

4. NNでモデリングされた入力と出力の関係を見てみます。Networkが表示されている画面上でCtrlキーを押しながら2つの入力素子と1つの出力素子を選択します。次に、[View]->[Projection]を選択すると以下の結果が表示されます。

SNNS_4.png

確かに、入力と出力の関係が学習されています。なんか実際のアナログ回路でXORを作ったような入力と出力の関係でおもしろいです。

4.[File]->[Save data]で結果を保存します。保存の時に"Saving details"というダイアログがでますが、[Include input patterns]と[Include output patterns]にcheckを入れることにします。また、[FIle]->[Sava]で構築したnetworkも保存します。

最後に、結果を見てみます。今回学習には4つのデータが使われているのですが、NNの出力と合わせて出力されています。

#1.1
0 0 ← 入力(学習用データ)
0  ← 出力(学習用データ)
0.14919 ← NNの出力
#2.1
0 1
1
0.88629
#3.1
1 0
1
0.83977
#4.1
1 1
0
0.13761


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

2006年07月27日

Stuttgart Neural Network Simulator その1

Stuttgart大学で開発されたニューラルネットワークシミュレータであるStuttgart Neural Network Simulator (SNNS)についてメモしたいと思います。

QSARを行うにあたり、MLR,PLS等の多変量解析だけではなくNNも有効なモデリング手段ですね。SNNSはQSARモデルの作成にも利用されており、論文でも多く見かけます。最近では、SNNSのJava GUI版(JavaNNS)が登場し、インストール作業も楽になったと思います。

それでは、JavaNNSをWindowsにインストールし、実際に起動してみます。
まず、SNNSのJavaNNSからJavaNNS-Win.zipをdownloadします。次に、ここでは、JavaNNS-Win.zipをC:\Java以下で解凍します。するとC:\Java\JavaNNS-Winが作成されます。

JavaNNSの起動ですが、コマンドプロンプトで、C:\Java\JavaNNS-Winに移動し、"java -jar JavaNNS.jar"で起動できます。一回目の起動時にSNNS_jkr.dllのインストール先が問われますが、通常は、デフォルトのPathで問題ないと思います。

問題なく起動できれば以下のような画面が現れます。

SNNS1.png


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

2006年07月26日

JOELibで分子のfragmentation

前回CDKで分子のfragmentationを行いました。JOELibでは、SMARTSFragmentationクラスを用いることで、SMARTSパターンを利用したfragmentationができます。

今回は、例として、ペプチド結合(アミド結合)を切断することにより分子のfragmentationを行ってみます。まずは、SMARTSパターンをVectorにaddします。ここでは、1つのパターンしかaddしていませんが、複数のSMARTSパターンをaddすることにより、様々なパターンで切断することができます。

 JOEMol mol = new JOEMol(inType,outType);
 String smartsPattern = "NC(=O)C";
 Vector smarts_vec = new Vector();
 smarts_vec.add(smartsPattern);

次に、SMARTSFragmentationクラスのインスタンスを作成し、SMARTSパターンの入ったVectorをsetします。

 SMARTSFragmentation sf = new SMARTSFragmentation();
 sf.setPattySMARTS(smarts_vec);

最後に、getFragmentation(JOEMol mol)メソッドにより分子のfragmentationを行います。結果はJOEMolVectorとして返ってきます。

 sreader.readNext(mol);
 JOEMolVector mol_vec = sf.getFragmentation(mol);
 for(int i=0;i<mol_vec.getSize();i++){
  swriter.writeNext(mol_vec.getMol(i));
 }

以下の図は、Ala-Glu-Tyrをfragmentationした例です。

frag_smarts.png


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

2006年07月25日

JOELibで分子画像の作成

JOELibで分子画像を出力したいと思います。分子画像の作成には、Mol2Imageクラスを利用します。instance()メソッドでインスタンスを作成した後、setDefaultHeight(int height)とsetDefaultWidth(int width)メソッドを用いて、高さと幅のピクセル数を指定します。

 Mol2Image image = Mol2Image.instance();
 image.setDefaultHeight(350);
 image.setDefaultWidth(350);

Mol2Imageクラスには、SMARTSパターンに一致する部分をハイライトして表示する機能がありますので、SMARTSパターンを定義します。
 
 String smartsPattern = "c1ccccc1";
 JOESmartsPattern smarts = new JOESmartsPattern();
 if(!smarts.init(smartsPattern)){
  System.err.println("Invalid SMARTS pattern.");
 }

次に、mol2image(JOEMol mol, JOESmartsPattern smarts)メソッドを用いて画像を作成します。画像はBufferedImageとして返ってきます。

 sreader.readNext(mol);
 BufferedImage bimage = null;
 bimage = image.mol2image(mol,smarts);

最後に、png形式でファイル出力することにします。

 ImageIO.write(bimage,"png",new File("test.png"));

test.png

SMARTSパターンによるハイライト機能は便利ですね。


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

2006年07月24日

Blue Obelisk

Blue Obeliskは、Chemoinformaticsに関連するアルゴリズム、データ等の共有/相互運用を目的とした組織で、Bioclipse, CDK, JOELibなど様々な開発グループが参加しています。

例えば、Cheminformatics関連のアルゴリズムを調べたい場合、Blue ObeliskのAlgorithm Dictionaryにアクセスすると、主なアルゴリズムはほとんど見つかると思います。基本的には、そのアルゴリズムの実装されているクラス名が示されていますので、ソースコードを読むことで理解を深めることができます。原著論文を読むよりも実装レベルで理解できるので便利です。
他にもBlue Obeliskの参加メンバーのBlogへのリンクもあり、このBlogもなかなかおもしろいと思います。

Blue Obeliskに関する論文もPublishされていますので、以下に挙げておきます。
 J. Chem. Inf. Model.; 2006; 46; 991-998


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

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 | このブログの読者になる | 更新情報をチェックする