Λlisue's blog

つれづれなるままに更新されないブログ

PyMOLでOpenDX形式のファイルがちゃんと読めない(Amber 14のgist出力とか)のを何とかする

どうも、ご無沙汰しております有末です。今日は完全なる自分向け技術メモなので、かなり特異な人にしか役に立たないでしょう。

やりたいこと

Amber 14で使えるgist(Grid inhomogeneous solvation theory)コマンドで出力されるOpenDX形式のファイルを読み込んでビジュアライズしたい

問題点

APBS & PDB2PQRなどで作成したXXXX.dxファイルは読めるが、何故かAmberから出力されるXXXXX.dxが読めない。ついでに「エラーが発生しました」としか表示されないとても良心的な設計。

原因

どうもPyMOLはOpenDX形式のファイルを読むために独自のパーサーを使っているらしく、それがとても下らない原因で死んでいた。必死に探した結果見つけたこのメールが無かったら絶対わからねぇレベル。

解決法

下記のどちらかを行う

  1. gistで出力されるOpenDX形式ファイル全てで"object 3 class array type float"となっている部分を"object 3 class type double"と置き換える
  2. パッチ作ったのでそれを当ててコンパイルする

パッチを当ててコンパイルする手順

  1. まずはPyMOL 1.7.4をダウンロードし、解凍します
  2. 次に先ほどのパッチをObjectMap.cpp.patchという名前で上記解凍ディレクトリ(pymol)に保存します
  3. パッチを当てます(patch -p0 < ObjectMap.cpp.patch)
  4. コンパイルしてインストールします。この際 LANG=C 以外だと変なエラーが出るので渡します。下記参照

    # /usr/local/share/pymol/modules に関連モジュールを、/usr/local/bin/pymolに本体をインストールする例
    LANG=C sudo python setup.py build install --home=/user/share/pymol --install-lib/usr/share/pymol/modules --install-scripts=/usr/local/bin
    # porg 使った場合の例
    LANG=C sudo porg -lp pymol-1.7.4 "python setup.py build install --home=/user/share/pymol --install-lib/usr/share/pymol/modules --install-scripts=/usr/local/bin"
    

パッケージ足りないとか言われたらLinux Installみて頑張る。