スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ひでひでた
スポンサー広告  

MD を行うときに便利な Python 関連モジュールの紹介
昨晩、記事を更新しようとしてブログの管理画面を開こうとしたのですが、どうもサーバー側の問題でアクセス出来ませんでした。あれは何だったのだろう?いざ管理画面に入ると「過去の記事の管理」などがクリック出来なくて編集も不可能だし、そろそろFC2から移転した方がいいかもしれないと考え始めています。
 ところで、大学院における僕の専攻は分子動力学(MD)によるシミュレーションであり、博士課程に移って以来いくつか便利な道具を使ってきたのでここで関連資料とともに紹介してみようと思います。MD もしくはバイオインフォマティクスをやっている人でも使っている道具は様々で、例えば Python vs. Perl とか Fortran vs. C(++) とか vi vs. Emacs とか色々な戦争が勃発していますが、ここでは Pyhton 関連のプログラムだけに言及します(ちなみに僕は Python & vi 、時々 Eclipse 派)。過去の記事ですでに触れているものも多いですが、そこらへんはご容赦ください。

■基本的な道具 …… Python, iPython
 Python 付属のシェルもそれなりに使えますが、一度立ち上げてしまうと less などのシェルのコマンドが使えなくなるのが不便です。そこで iPython を導入しましょう。対話的な Python シェルであるところは同じですが、!を頭に付ければシェルのコマンドを通常通り使う事が出来ます。また、オブジェクトの後ろに?をつけることで型やその中身(リストの要素など)、DocString などを表示出来るので便利です。
○参考:
Python 公式ドキュメント。ライブラリリフェレンスがまとまっている。

■科学計算など …… numpy, matplotlib
 おそらく科学計算目的の Pythonユーザーで numpy モジュールを知らない人はいないと思われます。内部で BLAS などを呼ぶ事で高速に行列計算を行ってくれる神モジュールです。最近では特異値分解を行うのに numpy.linalg.svd メソッドを使ったりしています。乱数発生用のモジュールを含んでいるので統計処理目的でも使用可。
 matplotlib は対話的にグラフを描画出来るプログラム群です。gnuplot はすでに処理済みのデータファイルを元にグラフを手軽に描画出来るソフトですが、matplotlib は Python シェルを立ち上げた状態でデータ処理をしつつプロットを行いたいときに使うと便利です。
○参考:
Python Scientific Lecture Notes. 科学者向けの numpy および matplotlib のレクチャーノートらしいです。Python 自体の使い方もかなり丁寧に解説されているため、この資料から勉強をスタートすると最短距離で習得に近づけるかもしれない。

■他言語とのインターフェース …… f2py, ctypes
 Python は汎用性が高く習得も楽である、という売り文句が実態を表していると常々感じていますが、重い計算を行わせると Fortran や C に比べて明らかに低速なのがネックです。そこで f2py や ctypes を使いましょう。これらは 非常に使いやすい Fortran (C) ラッパーです。プログラムは基本的に Python で書きたいが、最も計算量が多い部分だけ Fortran(C) プログラムに処理させたい、という要望に応えてくれます。使い方も簡単で、f2py なら元の Fortran コードに !f2py... といったディレクティブを挿入して dll を作るだけです。ctypes も同様。
 注意点が2つ。まず、f2py は Python とは別にインストールする必要があります(とは言っても apt-get とか yum を使うだけです)。また、C++ コードを ctypes 経由で Python コードに組み込むためには一旦 C 言語にラップしないといけないようです。ググると色々出ますが理解していないので今のところ紹介は出来ません。
○参考:
UCSB での MD レクチャー。このページの Reading 以下にある Writing Fast Fortran Routines for Python 内で f2py の使い方を解説しています。題材は MD ですが読めば誰でも分かる程度に丁寧に書かれています。

■分子可視化ソフト …… VMD, PyMol
 タンパク質の立体構造を目で見て確認するのに便利なソフトを2つ。VMD はトラジェクトリのデータを元にして分子運動を可視化するのに便利です。以前はこれを使って静的構造も見ていましたが、今のメインは PyMol です。出版品質で分子の3次元構造を表示してくれます。標準で様々なコマンドを含む上、Python スクリプトを読み込み可能なのが嬉しいです。
 PyMol は大半の Python ユーザーと無縁だとは思いますが、例えば "fetch 1GFL" と入力するだけで GFP (下村さんがノーベル賞とったアレ)の立体構造が簡単に見れるので暇なときにでも遊んでみてほしいです。
○参考:
PyMol を使ってみよう。PyMol の基本的な操作法はこのページで勉強しました。
 
追記:
上記コマンドを先ほど使ってみたところ、なぜかエラーが出てしまってうまく動きませんでした。代わりに GFP の画像を貼っておきます。実は見るのは初めてだったのですが、その構造の見事さに感動してしまいました。自然はこんなもんをデザインしてきたなんて凄すぎる。
側面 内部
スポンサーサイト
ひでひでた
シミュレーションなど   0 0

IndentationError
なんか昨日今日と涼しいですね。クーラー要らず。うちの研究室は室内温度を28℃に保っているので外より暑いです。

さて、相変わらず Python 使ってプログラムしてるんですが、なかなか原因が分からないエラーが生じて時間を食われたので、もしかしたら需要があるかと思うのでここにメモしておきます。インデントするときに tab キー使う人は多いでしょうが、エディタの設定によっては tab キーによって入力される空白がスペースと同等ではない場合があるので要注意です。Python は tab とスペースを別物だと認識します。

例えば vi の場合なら、.vimrc ファイルで
set expandtab
としておかないと tab キーがスペースに置換されません。今日はこのせいで文法的に正しいと思われるコードに IndentationError が出たり、逆に明らかに正しくないコードがなぜか動いた上に期待した結果をはき出したりしてました。

こういうどうでもいいところでのエラーはほんと勘弁してほしいわ。
ひでひでた
シミュレーションなど   0 0

Python
Python、いいですね。ハマり始めている。
 とにかくライブラリの充実っぷりがすごいです。それとインターフェイス。iPython+Numpy+Scipy+Matplotlib で無敵って感じ。Scipy のおかげで FFT もメソッドを呼び出すだけで実行出来るし、Matplotlib があれば gnuplot は必要なさそうです。ただし、(普段使っている OS である)Ubuntu の apt-get で Scipy を入れると肝心の blas とかを使ってくれなくなるとの情報もあるので注意が必要。何にせよ、書くのが簡単でテキスト処理するには便利です。
 今のところ
みんなのPython 改訂版みんなのPython 改訂版
(2009/04/11)
柴田 淳

商品詳細を見る
を使って勉強してます。1日30ページずつくらい進んでいて、今日でようやく半分終わりました。明日からクラスとかをやります。この本についてはそのうちレビューを書こうかな。Cなど他の言語を学んだことのある人にとっては分かりやすい本ではないと思います。もちろん悪いところばかりという訳ではないよ。
 Python の勉強をするときには日本語の資料が他の言語に比べて少ないのがネックかなぁ。日英関係なく参考に出来そうなサイトをいくつか見つけたのでここに載っけておきます。
 Python Scientific Lecture Notes には、特に科学者向けの丁寧かつ実際的な解説があります。なんか海外のグループが作った資料を翻訳してくれているらしい。その資料自体も PDF ファイルとして落とせるので、資料は紙でっていう僕みたいな人にもお勧め出来ます。言語自体の勉強をするって感じではない。あ、資料という意味では、van Rossum 自身が書いたチュートリアルがどこかに落ちていましたが場所は忘れました。
 Python Tutorial は名前通りのサイト。英語だけど一番丁寧なんじゃないでしょうか。
 IronPython.net では .NET で使える IronPython をダウンロード出来ますが、ブラウザ上で手取り足取り Python の仕様を教えてもらうことも可能です。ブラウザにシェルがくっついてる感じ。英語です。
 それと、言語自体を勉強するという趣旨では
初めてのPython 第3版初めてのPython 第3版
(2009/02/26)
Mark Lutz

商品詳細を見る
が詳細に書かれていて良いと思います。今日本屋で買ったばかりです。O'Reilly の例の大きな判型かつ400ページは下らない分厚いものですが、正直言って上に挙げた本よりはずっと楽しく読めるので苦にはなりません。
 まあ今んとここんな感じかな。ちょっとシミュレーション関連で文字と数値が混ざったテキストを処理しないといけなくなってきたので、Python はちょうどいいのかもしれないですね。やり始めたきっかけは先輩が使っていたからというだけだったのだけど。クラスとか、OOP を学び始めるのに Python を選ぶのが良いのかは分からないです。
ひでひでた
シミュレーションなど   0 0

Perl
特に目的意識もなくPerlを勉強し始めました。使ってる本はコレ↓
新版Perl言語プログラミングレッスン入門編新版Perl言語プログラミングレッスン入門編
(2006/10/21)
結城浩

商品詳細を見る
使ってる、と言っても、さっき買ってきたばかりです。ほんと衝動的な始め方で。
 初めてプログラミングする人に向けて書かれているような感じの本です。実際、C言語を軽く使える程度に学んだ状態でこの本を読んでみると対して悩まずにPerlに慣れる事が出来ます。何かバイオインフォマティクスの人達はPerlを使うとか聞いた事があるんだけど、実際どうなんだろう。確かに文字配列の変換とか抜き出しが出来るから相性が良いような気はする。

 more...

ひでひでた
シミュレーションなど   0 0

白色ガウス、しかも離散なら簡単
ひとまず正規分布する乱数は出来たので白色ガウスノイズも作れるようになりました。
 とはいえ肝心のLangevin方程式はItoもしくはStratonovich積分のどちらを使えばいいのか、どのようなときに両者が一致するのか理解していないのでまずは解析的な方を分かるようにした上でシミュレートする方針でいこうとおもいます。確率微分方程式はエクセンダールが良いとか言うけどあんな数学的な本は全く読む気にならないし、まあ今読んでる工学部向けのちょっとだけややこしい本でがんばります。van Kampenにも記述があるけど実用的でない。
 うちの研究室はみなやっていることがバラバラで、先輩方はそれぞれ統計力学に強かったり数値計算に強かったり、はたまたトポロジーに強かったりします。僕の場合は統計と数値計算をそれぞれ学んで、実験の研究室の方々からデータとかの読み方を教わっているのでなかなか良い環境だと言えます。授業自体も工学部のやつを普通に受講できるし。大きな総合大学でしかできないことかな。
 ありがたいことで。
ひでひでた
シミュレーションなど   0 0

PREV | HOME |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。