Install open source pymol ~ APBS plugin

（おことわり）
本記事は初心者が試行錯誤した過程を備忘録を兼ねてまとめたものです。
不正確な記述などありましたらご指摘いただけますと幸いです。

# はじめに
pymolの製品版はここからDLできる。
https://www.pymol.org/

使い方はTogoTVでも紹介されている。

https://togotv.dbcls.jp/20200325.html

しかし、製品版の教育版ライセンスでは、出版目的での利用は禁止されている。
そこで、オープンソース版をインストールして表面電荷表示などのプラグインを導入することを試みる。

## Anacondaインストール→Anacondaでpymolをインストール
ここでは、minicondaを使用

https://docs.anaconda.com/miniconda/

Anaconda install から pymol installまでのやりかた解説はコチラ
おそらくこれが一番簡単。

https://ouchidekaiseki.com/install.php

**ここまでで、pymolの使用自体はできるようになる。カンタン！**

\
（参考）Anacondaインストール後からのみの解説

https://qiita.com/kojix2/items/3c57a50fc29ac5361952

（参考）conda install を使わない方法

https://qiita.com/tonets/items/1927058e4297fc1c060d


## （おまけ）ショートカット用のバッチファイルを作成

以下のコードを"pymol.bat"として保存
~~~
echo off
cd C:\Users\USERNAME\miniconda3
cmd.exe /K "Scripts\activate.bat base && conda activate pymol && pymol"
~~~

（出典）

https://ouchidekaiseki.com/install.php

これで、batファイルをダブルクリックすれば開くようにはなった。
ただ、bat ファイルはスタートメニューにピン止めできないらしい。

https://donadona.hatenablog.jp/entry/2016/08/22/182751

を参考に、ショートカットを作成→プロパティからリンクをいじる→できたファイルをタスクバーやスタートメニューに追加
とやることで、ボタン一つで起動できるようになる！



## ここから、Anaconda環境にapbsをインストールしていく
次に、以下の画像のように表面電荷を表示できるAPBSをインストールする。
>Jurrus E, Engel D, Star K, Monson K, Brandi J, Felberg LE, Brookes DH, Wilson L, Chen J, Liles K, Chun M, Li P, Gohara DW, Dolinsky T, Konecny R, Koes DR, Nielsen JE, Head-Gordon T, Geng W, Krasny R, Wei G-W, Holst MJ, McCammon JA, Baker NA. Improvements to the APBS biomolecular solvation software suite. Protein Sci, 27 (1), 112-128, 2018. DOI:10.1002/pro.3280

![CaM_APBS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/fa6538c6-99d0-fd24-ebf6-f345e56b229a.png)
(PDB ID: 1cll)


※環境の確認
```
conda create -n pymol # 仮想環境の構築
conda activate pymol　# 仮想環境の起動
conda install -c conda-forge pymol-open-source
```
を行った、という前提で進める。
（ちなみに、執筆時にはpymol_scという別環境を構築し、そこに製品版をインストールして環境を照らし合わせながら作業していた。時たま出てくるpymol_scはそういう意味です。）


Anaconda Pronptにて
~~~
conda activate pymol　# 仮想環境の起動

conda install conda-forge::apbs
conda install conda-forge::pdb2pqr
~~~
（出典）

https://anaconda.org/conda-forge/apbs

何か聞かれたら、yで進める
インストールに成功すると、pluginタブから"Run"でプログラムを実行できるはず…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/648b90a2-702b-4d6c-82ad-e7e3c2f8ffd9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/5a5fffec-987a-f9c1-2b10-1aea4a890b56.png)

なのだが…うまくいかなかったので、対処法を以下にまとめる。

**結論から言うと、以下のように正しい.exeファイルを指定できれば動く。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/88d50303-a536-a16d-0fd9-076625298461.png)

しかし、初期設定ではプログラムファイルの指定先が正しくない場合がある。
簡単な場合だと、以下のように同じディレクトリ内にある.exeファイルを指定するとうまくいくと思われる。
C:\Users\username\miniconda3\envs\pymol\Scripts\pdb2pqr
↓
C:\Users\username\miniconda3\envs\pymol\Scripts\pdb2pqr30.exe

一方、apbs.exeはというと…
製品版では　miniconda3\envs\pymol_sc\Library\bin
にあるのだが、open source ver. にはない。

インストール画面を見ると、インストールに失敗しているようである（2024.11.29時点）
（この段階で成功すれば、この先は必要ないのかもしれない。）
~~~
(pymol) C:\Users\owner>conda install conda-forge::apbs
Channels:
 - defaults
 - conda-forge
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - conda-forge::apbs

Current channels:

  - defaults
  - https://conda.anaconda.org/conda-forge

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.
~~~

APBSのWebsiteではgithubに行き、DLするように案内されている

https://www.poissonboltzmann.org/

ここからだとwindows版のソースコードをDLできる。
インストールした後、自分でコンパイルする必要がある…？（よくわかっていません…）

https://github.com/Electrostatics/apbs/releases

上のサイトのAPBS3.0、あるいは以下のサイトからコンパイル済みのZipファイルが入手できるようである（2024.11.30時点）。
とりあえず筆者は以下のサイトからDLしてうまくいった。

https://github.com/Electrostatics/apbs-pdb2pqr/releases

**いずれにせよ、何とかしてapbs.exeを入手できれば良い。そのファイルの置き場所を指定してあげて、以下のような状態になれば完了！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/88d50303-a536-a16d-0fd9-076625298461.png)

## パラメーター

ここには何を入れるの？という話
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3947082/1fcfa650-1d0a-6645-1ba5-b22126fa7c44.png)
pdb2pqrのサイトで、各項目にカーソルを合わせると出てくるコマンドを使えばよい。

https://server.poissonboltzmann.org/pdb2pqr

(一応メモ。上記サイトを見る方がわかりやすい。)
```
# select foce field & pH control
--ff=AMBER 
--titration-state-method=propka --with-ph=7

ex: 
--ff=PARSE --titration-state-method=propka --with-ph=7
```
PARSEについて…
>For most applications, the choice is easy: PARSE. This forcefield has been optimized for implicit solvent calculation and is probably the best choice for visualization of biomolecular electrostatics and many common types of energetic calculations for biomolecules. However, AMBER and CHARMM may be more appropriate if you are attempting to compare directly to simulations performed with those force fields, require nucleic acid support, are simulating ligands parameterized with those force fields, etc.


https://pdb2pqr.readthedocs.io/en/latest/using/examples.html

とのこと。

```
# options
Ensure that new atoms are not rebuilt too close to existing atoms: --nodebump と打たない
Optimize the hydrogen bonding network: --noopt　と打たない
Assign charges to the ligand specified in a MOL2 file: --noopt
Create an APBS input file: --apbs-input=FILENAME.in
Add/keep chain IDs in the PQR file: --keep-chain
Insert whitespaces between atom name and residue name, between x and y, and between y and z: --whitespace
Make the protein's N-terminus neutral (requires PARSE forcefield): --neutraln
Make the protein's C-terminus neutral (requires PARSE forcefield): --neutralc
Remove the waters from the output file: --drop-water
```
AMBERではpH2でもC末端がプロトン化されなかったので、
`--ff=PARSE --titration-state-method=propka --with-ph=2 --neutralc`
とする必要がありそう。

## 初期設定の書き換え
ここまでの作業で、使用自体は可能。
ただこのままだと、開くたびに実行ファイルを選びなおさなくてはいけないのでめんどくさい。

https://morita-rikuri.blogspot.com/2019/01/pymol-apbs-electrostatis.html

ファイルの置き場所や書き換え方が異なっていたので以下にメモ。
" C:\Users\owner\miniconda3\envs\pymol\Lib\site-packages\pymol\pymol_path\data\startup\apbs_gui\__init__.py "
のファイルを、以下のように書き換える。

    # executables # 変更前
    from shutil import which
    form.apbs_exe.setText(electrostatics.find_apbs_exe() or 'apbs')
    form.pdb2pqr_exe.setText(
            which('pdb2pqr') or
            which('pdb2pqr30') or
            # acellera::htmd-pdb2pqr provides pdb2pqr_cli
            which('pdb2pqr_cli') or 'pdb2pqr')


    # executables # 変更後
    from shutil import which
    form.apbs_exe.setText(which(R"C:\APBS-3.0.0\bin\apbs.exe") or electrostatics.find_apbs_exe() or 'apbs')
    form.pdb2pqr_exe.setText(
            which(R"C:\Users\owner\miniconda3\envs\pymol\Scripts\pdb2pqr30.exe") or
            which('pdb2pqr') or
            which('pdb2pqr30') or
            # acellera::htmd-pdb2pqr provides pdb2pqr_cli
            which('pdb2pqr_cli') or 'pdb2pqr')

数点コメント
・ディレクトリパスを指定する""の前に**R**をつけること
・find_executableではなくwhichを使用

# 以下、おまけ

### 参考にしたサイトたち

https://qiita.com/kojix2/items/3c57a50fc29ac5361952

https://ouchidekaiseki.com/install.php

https://anaconda.org/conda-forge/apbs

https://www.python.jp/install/anaconda/conda.html

https://qiita.com/flcn-x/items/2a1c4095d7febe864db8


## pymol の使い方
森脇先生のページにかなりよくまとめられている。一方で環境構築の記事はmac向け。

https://yoshitakamo.github.io/pymol-book/index.html

本記事でやっていることのフローとしてはこれ。

https://yoshitakamo.github.io/pymol-book/ch05/apbs.html

また、疎水性度を表示するだけならこちらの記事を参照。

https://ouchidekaiseki.com/hydrophobicity.php


https://qiita.com/Flying-snowball/items/1ea1a467218e8e3f028d

## 自分用メモ
・仮想環境の名前
pymol　オープンソース版
pymol_sc　製品版

・製品版のデフォルトのパス
apbs
C:\Users\username\miniconda3\envs\pymol_sc\Library\bin\apbs.EXE
C:\Users\username\AppData\Local\Schrodinger\PyMOL2\Library\bin\apbs.EXE
pdb2pqr
C:\Users\username\miniconda3\envs\pymol_sc\Scripts\pdb2pqr #これだと走らない
C:\Users\username\AppData\Local\Schrodinger\PyMOL2\Scripts\pdb2pqr.EXE

.exeファイルを指定する！