読者です 読者をやめる 読者になる 読者になる

Λlisue's blog

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

Pymolにて表面電荷を表示する(Debian Wheezy)

HowTo Linux Python Config Debian Pymol Biology Science

f:id:lambdalisue:20130808111534p:plain

Enhanced Green Fluorescent Protein

タンパク質の構造解析等を行なっているので簡単に表面電荷を表示したいことが多々あります。表面電荷計算はAPBS(Adaptive Poisson-Boltzmann Solver)を使用すると計算でき、ビジュアライズはPymolのAPBS Pluginを使用するとできるのですがデフォルトでインストールされるものだとエラーが出たのでメモ的に残しておきます。

エラー詳細

最初は下記のようにPymol, APBSおよびpdb2pqrapt-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を押すとエラーが発生します。

f:id:lambdalisue:20130808105433p:plain

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