Pymolにて表面電荷を表示する(Debian Wheezy)
タンパク質の構造解析等を行なっているので簡単に表面電荷を表示したいことが多々あります。表面電荷計算はAPBS(Adaptive Poisson-Boltzmann Solver)を使用すると計算でき、ビジュアライズはPymolのAPBS Pluginを使用するとできるのですがデフォルトでインストールされるものだとエラーが出たのでメモ的に残しておきます。
エラー詳細
最初は下記のようにPymol, APBSおよびpdb2pqrをapt-get
を利用して下記のようにインストールしました。
% sudo apt-get install pymol apbs pdb2pqr % # それぞれのバージョンの確認(実際は不要) % pymol -c | grep Version PyMOL(TM) Molecular Graphics System, Version 1.5.0.1. % apbs --version | tail -1 APBS 1.3 % pdb2pqr --version pdb2pqr.py (Version 1.8)
インストール自体は問題なく終わるのですが、いざ表面電荷を描画しようPlugin > APBS Tools2...
を開き下記ウィンドウ中のSet Grid
を押すとエラーが発生します。
Error: 1 <type 'exceptions.UnboundLocalError'> Exception in Tk callback Function: <function <lambda> at 0x29e9488> (type: <type 'function'>) Args: () Traceback (innermost last): File "/usr/lib/python2.7/dist-packages/Pmw/Pmw_1_3/lib/PmwBase.py", line 1747, in __call__ return apply(self.func, args) File "/usr/lib/python2.7/dist-packages/Pmw/Pmw_1_3/lib/PmwDialog.py", line 153, in <lambda> command=lambda self=self, name=name: self._doCommand(name)) File "/usr/lib/python2.7/dist-packages/Pmw/Pmw_1_3/lib/PmwDialog.py", line 132, in _doCommand return command(name) File "/usr/lib/python2.7/dist-packages/pmg_tk/startup/apbs_tools.py", line 1075, in execute self.runPsize() File "/usr/lib/python2.7/dist-packages/pmg_tk/startup/apbs_tools.py", line 1096, in runPsize good = self.generatePqrFile() File "/usr/lib/python2.7/dist-packages/pmg_tk/startup/apbs_tools.py", line 1007, in generatePqrFile good = self._generatePdb2pqrPqrFile() File "/usr/lib/python2.7/dist-packages/pmg_tk/startup/apbs_tools.py", line 1615, in _generatePdb2pqrPqrFile if retval != 0: <type 'exceptions.UnboundLocalError'>: local variable 'retval' referenced before assignment
いろいろとググって見たのですがなかなか原因がわからず困っていました。
解決法
結論をいうと使用しているapbs_tools.py
というPymolプラグインが原因でした。Debian WheezyでPymolをインストールした際に自動的に入るものはAPBS Tools2ですが現在は名前をapbsplugin.py
に変更しAPBS Tools2.1になったようです。
したがってGithubにあるPymol-script-repoから最新版のapbsplugin.pyをダウンロードしPlugin > Install
からインストールしAPBS Tools2.1を使用すれば解決します。わかりにくいのでAPBS Tools2のほうは削除してしまったほうが良いでしょう。
ソースを見るとpdb2pqrの読み込み位置がおかしかったりしたためPymol Plugin側の問題だと気づくのに時間がかかりました。解決してみれば簡単な問題でしたorz