2006年06月09日

Pythonでケムインフォ: SMARTS検索

Frownsを用いて化合物の部分構造検索を行ってみます。
sdfからの分子の入力方法は、6/8の記事と同じ方法で行っています。
今回のプログラムのUsageは以下のとおりです。

 Usage: smartsearcher.py xxx.sdf 'PATTERN' > result.txt

まず、'PATTERN'として入力するSMARTS文字列をcompile関数に渡します。

 pattern = Smarts.compile(sys.argv[2])

compile関数は戻り値として、Matcherクラスのインスタンスを返します。

次にwhile文の中で順次読み込んでいるsdf中の分子とSMARTS文字列の一致判定を行います。この判定には、matchメソッドを利用し、第2引数に1を渡しています。
例えば、分子中にSMART文字列と一致する部分が5箇所あったとしても最大1つだけ見つければよいことを示しています。全ての一致が必要な場合は、-1を渡します。デフォルトが-1ですので、第2引数を渡さなければ全ての一致を検出します。

 match = pattern.match(mol,1)

matchメソッドは一致がない場合Noneオブジェクトを返しますので、以下の式で一致を判定します。

 if match != None:

また、逆に一致する場合、matchメソッドは、SMARTS文字列に一致したatomとbondのPathSetを返します。そして、次のような結果を表示します。

--------------------------------------------------
C1(=C2C(=C(C(=O)C=C2)Br)Oc3c(c(ccc13)O)Br)c4c(C(=O)O)cccc4
match 1
atoms (Atom(18), Atom(17), Atom(16), Atom(15), Atom(20), Atom(19), Atom(22))
bond (Bond(19), Bond(18), Bond(16), Bond(22), Bond(21), Bond(20), Bond(24))
--------------------------------------------------
c1(c(cc(c(c1)O)C(C)(C)C)O)C(C)(C)C
match 1
atoms (Atom(4), Atom(14), Atom(13), Atom(8), Atom(7), Atom(5), Atom(6))
bond (Bond(14), Bond(13), Bond(12), Bond(7), Bond(6), Bond(4), Bond(5))
--------------------------------------------------



Frownsでは、SMARTS検索の一部にgraph matching libraryであるVFLibを利用しています。興味のある方はチェックしてみてください。


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


posted by わばのり at 07:25| Comment(0) | TrackBack(0) | Frowns | このブログの読者になる | 更新情報をチェックする

2006年06月08日

Pythonでケムインフォ:sdfの読み込み

今回は、Frownsを用いたsdfの読み込みについてメモしたいと思います。
FrownsのHPTutorialに例がありますので、これとは少し異なる方法をとってみます。
ちなみにTutorial中の例は古いバージョンのFrownsを使っている?と思われるため、Ver.0.9aを使う場合は、トップページ上にあるMOL File(example4.py)を利用した方がいいと思います。下記プログラムもVer.0.9aを用いています。

まず、組み込み関数open()に引数としてsdfのファイル名を渡します。そして、その戻り値をMDLモジュール内のsdinクラスの__init__メソッドに渡すことにより、そのインスタンスmdl_infoを生成させます。

次にwhile文を使ってsdfから順次分子を読み込み、それら分子のCanonical Smiles表記を表示します。
ここで、mol_info.next()は3つの戻り値をタプルで返します。
molにはMoleculeクラスのインスタンス、errにはエラーメッセージ、textには、sdfの中身がtextとして収められています。

while文からの脱出は、StopIterationにより行っています。





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

2006年06月06日

OELibでねじれ角の計算

6月4日の記事で、シクロヘキサンのねじれ角(C1-C2-C3-C4)の計算にOELibで作成したtorsionを利用しました。
そこで、今回は、OELibを用いた分子の入力からねじれ角の計算までをtorsion.cppを通して紹介したいと思います。

torsion.cppのソースコードを下のインラインフレーム内に記載しております。まずは、OELibのヘッダファイルであるopenbabel/mol.hとopenbabel/obconversion.hをincludeし、namespaceを定義します。ちなみに、torsionのUsageは以下のとおりです。
Usage: torsion filename atom1 atom2 atom3 atom4
ここで、filenameは分子ファイル名を示し、atomXは、ねじれ角を構成する原子のIDを示します。
次に引数チェックのあと、分子ファイルの拡張子からファイル形式を判定しています。分子の読み込みは、ファイルから1分子づつfor文の無限ループ内で行っており、mol.Empty()がtrueとなればbreakします。プログラムのメインとなるねじれ角の計算はOBMolクラスのGetTorsionを用いて計算しています。
今回定義したシクロヘキサンのねじれ角は下図のようになります。
tors1.png

torsion.cpp


コンパイル:
$ g++ -I/usr/local/include/openbabel-2.0 -L/usr/local/lib -o torsion torsion.cpp -llibopenbabel

実行:
$ torsion cyclo.sdf 1 2 3 4

出力:
conf-1 torsion_angle 304.814
conf-2 torsion_angle 291.955
..
..
conf-100 torsion_angle 329.156

無事にねじれ角が計算できると思います。



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

2006年06月05日

Javaでケムインフォ2

先日、Javaのケムインフォマティクス用ライブラリであるCDKを紹介しましたが、もう一つ有名なライブラリとして、JOELibがあります。JOELibは、OpenBabelのライブラリであるOELibのJava版です。とはいえ、OELibを単にJavaに置き換えたというだけでなく、JOELibにしかないクラスもあり、より拡張されたライブラリといえます。

個人的に、CDKは、多機能ではあるが、ややクラスの使い勝手が悪いところ及び一部に実装がまだ十分でないのでは?(新しい機能を積極的に取り入れているからでしょう)というところがあり、一方、JOELibはCDK程の多機能さはないが、クラスの使い勝手や実装も吟味されているという印象をもっています。

JOELibのおもしろそうなところは、Matlab interfaceを持っているところです。Matlabといえば、その汎用シミュレーションパッケージであるSimulinkも便利であり、制御系では必須のツールだと思います。さらに、最近では、システムバイオロジーの分野でも広く利用されていると思いますので、Matlab interfaceに関しては、ちょくちょく調べようと思っています。

ただ、どちらもケムインフォマティクスの基礎となるライブラリは十分に実装されていますし、JOELib中のJOEMolとCDK中のMoleculeクラスは変換可能ですので、2つのライブラリを同時に利用しながら、アプリケーションの開発もできます。

インストー方法も含め今後メモを積み重ねたいと思っています。



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

2006年06月04日

Tinkerで配座探索

FFEからのTinkerの操作がなかなか便利でしたので、FFEを使った分子の配座探索についてメモすることにしました。
配座解析には様々な方法が提案されていますが、今回は、Tinkerに含まれるDynamicを用いた分子動力学法(MD)により行いたいと思います。

例として、シクロヘキサンの配座解析を行ってみます。
1. 適当なソフトウェアでシクロヘキサンの三次元座標のmolファイルを準備する(cyclo.mol)。そして、babelを使ってtinker入力ファイルを作成する。
$ babel -imol cyclo.mol -otxyz cyclo.xyz

2. FFEを起動し、cyclo.xyzを読み込む。力場はmm2。
tin1.png

3. [Modeling Commands]タブをクリックし、[Optimize]をリストから選択し、[ロケット]ボタンを押す。
これにより、初期配座の最適化を行います。

4. 次に、[Dynamic]をリストから選択し、[Number of Steps]に100000を設定、[Temperature]に1000を設定、[Dump]に1を設定(あとはデフォルト値)する。そして、[ロケット]ボタンを押す。
ここでは、1000Kで100psのMDを行い、配座のサンプリングを1psごとに実施しています。

5. [Archive]をリストから選択し、[ロケット]ボタンを押す。
これで、cyclo.arcファイルが生成されます。これをFFEで開くとアニメーション表示で見ることができます。さらに、[Format]タブを選択し、ラジオボタン[X]を選択し、[ロケット]ボタンを押す。これにより、100個の配座が含まれるcyclo.xmolが生成されます。

6. cyclo.xmolをbabelによりsdf形式に変換する。
$ babel -ixyz cyclo.xmol -osdf cyclo.sdf
シクロヘキサンの配座を解析するために、ねじれ角(C1-C2-C3-C4)を計算します。ここでは、OELibを使った自作プログラム"torsion"を使って計算します。
$ torsion cyclo.sdf 1 2 3 4 > result.out
(torsionの詳細は、近々紹介しますね)

結果を下図に示します。横軸にシミュレーション時間、縦軸にねじれ角を示しています。複数のパターンがサンプリングされています。図右に代表的な2つのパターンを示します。
tin3-2.png

初期配座、シミュレーション時間、アンサンブルの検討など全くやってませんので、結果をまともに解釈はできませんが、FFE(Tinker)の使い方のメモということでご了承ください。
今回は、WindowsでFFEを使ってみましたが、インストールは超簡単ですし、本当に便利だなと思いました。

MDによるシクロヘキサンの配座解析は、下の書籍の中で詳しく紹介されていますので、興味のある方は読んでみてください。
「分子モデリング―基本原理と創薬への応用」江崎俊之訳 地人書館



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





posted by わばのり at 08:03| Comment(0) | TrackBack(0) | その他ツール | このブログの読者になる | 更新情報をチェックする

2006年06月03日

BINDでタンパク質間相互作用を調べる

タンパク質間相互作用(PPI)は、転写、翻訳、複製、シグナル伝達など様々な細胞内の重要なプロセスを担っています。したがって、PPIに係わる膨大な研究成果をデータベース化することは、これまでに分かっている現象を単純に知るというだけではなく、新しい解釈、系統的な整理、知識化を導く可能性を秘めています。さらに創薬においても、標的タンパク質の選別、副作用の検討など創薬研究者に対する重要な情報源になっていると思います。

現在、多数のPPI Databaseが公開されています(以下のサイトをご参考に)。
http://www.blueprint.org/bind/bind_relateddatabases.html

今回は、PPIで有名なデータベースの1つであるBINDについてメモしたいと思います。私はBINDというと、どうしてもDNSサーバが真っ先に浮かんできてしまいます(笑)。

The Biomolecular Interaction Network Database (BIND)は現在、Commercial版とOpen Access版があります。
http://www.unleashedinformatics.com/index.php?pg=products&refer=bind
ここでは、Open Access版を利用したいと思います。

今回は、p53のPPIについて検索してみることにします。

1. Open AccessのBINDをクリックし、はじめて利用する場合は、ユーザ登録を、そうでない場合はログインする。

2. メイン画面上のSearch Boxにp53と入力し、GOボタンを押す。

3. p53のPPIリストが表示されるので、Mdm2とのPPIを示す"interaction 301661"をクリックする。
"interaction 301661"が表示されていなければ、Search Boxに"301661"と入力し、検索してもOKです。ちなみに、この数値はBIND Idです。
bind-n2.png

4. BIND id: 301661に関する情報が表示されるので、右側にある"Visualize using..."というリストボックスから"Interaction Network 3.5"を選択する。
すると、ソフトウェアのダウンロード(Java Web Start)がはじまる。

5. ダウンロードが終わり、ソフトウェアが立ち上がると以下の画面が表示される。
bind-n3.png
p53とMdm2が結合していますね。
BINDのおもしろいところは、"Function","Localization","Binding"に関連する情報を“絵”として表現しているところです。この“絵”の意味は右側に説明がありますので、瞬時にそのタンパク質の概要を知ることができます。

6. 最後に、Mdm2をダブルクリックする。
bind-n4.png
おお!Mdm2と相互作用するタンパク質がでてきました。
この操作を繰り返すことにより、PPIネットワークをサーフィンできるわけです。

この他にも様々な使い方があるようですので、興味のある方はお試しください。



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

2006年06月02日

Javaでケムインフォ

The Chemistry Development Kit(CDK)は、Javaのケム/バイオインフォマティクス用ライブラリです。Cologne University Bioinformatics CenterのSteinbeck博士らにより開発がはじめられ、今では10以上の研究機関が開発に参加しています。

CDKには、ケムインフォマティクスに関する様々なクラスが用意されています。あまりにもいろんなクラスが含まれているので、まずは、APIを覗いてみましょう。
http://cdk.sourceforge.net/api/
おお!クラス名を見るだけでワクワクしますね。
さらに、CDK Newsというものも発行されており、CDKに関する最新の話題など、情報がゲットできます。

CDKを使えば様々なことが簡単にプログラミングできるのですが、特に、以前の記事でも触れましたが、2D->3Dコンバータも作れます(ただし、その精度は各自が利用してみて判断してください)。

今回は、まず、CDKで何ができるのかを知るために、CDKを使ったWebサイトを利用することにします。
以下のサイトにアクセスして下さい。
http://www.chemistry-development-kit.org/
"Input"にあるJChemPaintに分子構造を入力し、[Import from editor]ボタンを押します。そうすると"QSAR"にAtomic polarizabilitiesなどのDiscriptorが計算されます。XLogPもありますね。その他に、"Analyze"には、分子量やSMILES表記が、"Atomic Qsar"には、部分電荷が、"Render3D"では、分子の3D座標がJmolにより表示されます。

CDKWeb.png

CDKを使うことにより、このようなシステムを容易に構築できるのです。

CDKは魅力いっぱいのライブラリです。インストール方法や、クラスの使い方など、これから少しずつメモを積み重ねていきたいと思います。



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

広告


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

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

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