スポンサーサイト
上記の広告は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

立ち位置の見えない不安
お久しぶりです。研究室からの書き込みです。研究室は朝早くから動き出す中、僕は相変わらず夜型の傾向が強いです。

この一月の間に何があったか正確には覚えていませんが、相変わらずコンピュータに向かいっぱなしであることは代わりありません。8月になって導入した PyMol という分子の可視化ソフトが非常に多機能かつ操作しやすいため重宝しています。たんぱく質を三次元表示できるのはもちろんのこと、電子雲の描画や accessible surface area の計算をするコマンドまで含まれており、一旦描画した図を回転もしくは振動させながら動画を作成することも可能です。その名が表すとおり PyMol は Python で書かれているので当然 Python スクリプトを読ませることも出来るのが嬉しいところ。これまで使っていた VMD はシミュレーション結果を直接動画化する以外には使わなくなりそうです。

さて、先日のミーティングで発表した内容が好評で、今年中に共著論文を一つ書く方針で頑張ろうとボスには言われました。正直言って、その言葉を素直に受け入れられるような気持ちにはなりませんでした。

共著者(仮)は実験家だけど、彼の結果と僕のシミュレーション結果をどう折合わせるのか彼自身アイディアを持っていない状態だからロジックが逆転していると言わざるを得ない。詳しいことは書けませんがとにかく「論文を書く」という結論ありきな進め方に納得がいかない。いや、確かに来年の学振を意識すれば論文を書いてしまった方が良かろうというのは分かるのですが、そこまで急がなきゃいけないのか、とか、(もっと話を深める段階かもしれない)今の状況で書いてしまっていいのかとか、色々思うところがあるのです。

もちろん、根本的には僕の勉強不足が効いているのは分かっています。研究室を移ったとはいえ、仮にも博士課程学生の身。自分の研究がその業界なり何らかの流れの中でどのような立ち位置にあるのかをある程度は判別できるべきです。それを先生方に丸々任せきりにしてしまっている現段階では、あれこれ言っても根拠が薄い気がしています。いや正確に言えば、気がするのではなく、実際に薄いのでしょう。

どこかで「もっときちんとした形にしたい」と思っています。自分なりに意義を見出して、自分なりに主張をしたい。そうでないうちにこの手を離れていってしまうような、そんなことはしたくない。

というわけで、今のテーマと関連しており、かつ「これはおもしろいな」と自然に思えるものを探し中です。候補はある程度絞りつつあるところ。しかもこれなら普段相談している先生にも実績がある(かつて雑誌の表紙を飾ったレベル)。

まあでも、この先の展望が全然見えていない現状ではタイムリミットを決めてしまって、小さくてもいいから論文にした方がいいのかもなぁ。
ひでひでた
日常生活   0 0

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