PyMOLでOpenDX形式のファイルがちゃんと読めない(Amber 14のgist出力とか)のを何とかする
どうも、ご無沙汰しております有末です。今日は完全なる自分向け技術メモなので、かなり特異な人にしか役に立たないでしょう。
やりたいこと
Amber 14で使えるgist(Grid inhomogeneous solvation theory)コマンドで出力されるOpenDX形式のファイルを読み込んでビジュアライズしたい
問題点
APBS & PDB2PQRなどで作成したXXXX.dx
ファイルは読めるが、何故かAmberから出力されるXXXXX.dx
が読めない。ついでに「エラーが発生しました」としか表示されないとても良心的な設計。
原因
どうもPyMOLはOpenDX形式のファイルを読むために独自のパーサーを使っているらしく、それがとても下らない原因で死んでいた。必死に探した結果見つけたこのメールが無かったら絶対わからねぇレベル。
解決法
下記のどちらかを行う
gist
で出力されるOpenDX形式ファイル全てで"object 3 class array type float"となっている部分を"object 3 class type double"と置き換える- パッチ作ったのでそれを当ててコンパイルする
パッチを当ててコンパイルする手順
- まずはPyMOL 1.7.4をダウンロードし、解凍します
- 次に先ほどのパッチを
ObjectMap.cpp.patch
という名前で上記解凍ディレクトリ(pymol
)に保存します - パッチを当てます(
patch -p0 < ObjectMap.cpp.patch
) コンパイルしてインストールします。この際
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みて頑張る。