6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PyMOL設定小ネタ

Last updated at Posted at 2025-07-05

PyMOL設定小ネタ

pymolrcの設定

.pymolrcファイルは、PyMOLの起動時に読み込まれる設定ファイルです。LinuxやmacOSの場合は通常ホームディレクトリ(/Users/${USER}または/home/${USER})の下に隠しファイルとして存在しています。この設定ファイル自体はPyMOLを開いた後に[File] -> [Edit pymolrc]を選択することで開くファイルと同じなので、そちらに記述してもOKです。私はWindowsを使っていないのでpymolrcファイルの正確な位置はわからないのですが、Windowsの方はこちらから編集してください。

scshot 2025-07-06 12.25.10.png

このファイルにコマンドを記述しておくと、PyMOLの起動時にそれらのコマンドが自動的に実行されるため、設定値の変更を毎回手動で行う必要がなくなります。rcというのはrun commandという意味です。たしか。

例えば私は以下のような内容の.pymolrcを用意しています(一部抜粋)。

set label_size, 18
set cartoon_loop_radius, 0.1
set cartoon_putty_radius, 0.2
set cartoon_oval_length, 0.8
set cartoon_gap_cutoff, 0
set cartoon_rect_length, 1.2

# Define custom functions
python
def plddt(selection="(all)", scheme="afdb", lower=50.0, upper=90.0, cnc=0):
    """
    DESCRIPTION

        Coloring by per-residue predicted LDDT (pLDDT) scores.
        (see Jumper et al. 2021 https://doi.org/10.1038/s41586-021-03819-2
         Suppl. Methods 1.9.6 for details)
        Note: The pLDDT score is embedded in the B-factor column of the PDB
        output from AlphaFold version 2.

    ARGUMENTS

        selection = string: atom selection {default: (all)}

        scheme = string: Coloring scheme. afdb or spectrum {default: afdb}.

        lower = float: minimum of spectrum {default: 50.0}

        upper = float: maximum of spectrum {default: 90.0}

        cnc = 0/1

    SEE ALSO

        spectrum
    """
    if scheme == "afdb":
        cmd.set_color("very_high", [0.051, 0.341, 0.827])
        cmd.set_color("confident", [0.416, 0.796, 0.945])
        cmd.set_color("low", [0.996, 0.851, 0.212])
        cmd.set_color("very_low", [0.992, 0.490, 0.302])
        cmd.color("very_high", selection + " and b < 100")
        cmd.color("confident", selection + " and b < 90")
        cmd.color("low", selection + " and b < 70")
        cmd.color("very_low", selection + " and b < 50")
        cmd.set("cartoon_discrete_colors", 1)
        cmd.util.cnc(selection)
    elif scheme == "spectrum":
        lower, upper = float(lower), float(upper)
        cmd.spectrum("b", "red_yellow_green_cyan_blue", selection, lower, upper)
        cmd.util.cnc(selection)
    else:
        print("scheme is not valid. Use 'afdb' (default) or 'spectrum'.")

def unhcr(selection="(all)", color_list=None):
    """
    coloring chains using UNCHR color palette.
    See UNHCR data visualization guidelines:
    https://dataviz.unhcr.org/download/UNHCR_Data_Visualization_Guidelines.pdf

    Parameters:
    - selection (str): atom selection (default is all atoms in all objects)
    - color_list (list): list of color names to use (default is the predefined color order)
    """
    if color_list is None:
        color_list = ['0x0072bc',
                      '0xffc740',
                      '0x32c189',
                      '0x6cd8fd',
                      '0xd25a45',
                      '0xa097e3',
                      '0x7c3c36',
                      '0xbfbfbf',
                      '0x0b3754',
                      '0x684d0b',
                      '0x1f5741',
                      '0x0b5269',
                      '0x683229',
                      '0x403c5d',
                      '0x482724',
                      '0x4d4d4d']

    chains = cmd.get_chains(selection)
    chains = list(chains)

    for i, chain in enumerate(sorted(chains)):
        sel = f"chain {chain}"
        if selection:
            sel = f"{selection} and {sel}"
        color = color_list[i % len(color_list)]
        cmd.color(color, sel)

# Register the functions as PyMOL commands
cmd.extend("plddt", plddt)
cmd.extend("unhcr", unhcr)
# tab-completion of arguments
cmd.auto_arg[0].update(
    {
        "plddt": cmd.auto_arg[0]["zoom"],
        "unhcr": cmd.auto_arg[0]["zoom"],
    }
)
python end

この中ではcartoon表示の設定や、AlphaFoldのpLDDTスコアを可視化するための自作関数plddt、UNCHRカラーでチェーンを色分けするための自作関数unhcrなどを定義しています。AlphaFold予測構造についてのpLDDTカラーリングコマンドという記事を昔書いていまして、予測構造を使う業界ではよくこのカラーリングを呼び出す事が多いのですが、このコマンドを登録しておくと簡単にカラーリングできますね。

scshot 2025-07-06 1.27.55.png

自作関数は、PyMOLのcmd.extendを使ってPyMOLのコマンドとして登録することができます。これにより、PyMOLのコマンドラインからplddt (selection)unhcr (selection)と入力することで、これらの関数を実行できるようになります。また、tabキーを押すことで引数の補完も可能になります。

PyMOL マウス操作モードの変更

PyMOLは歴史的な経緯から、3ボタン制(left・middle・right)のマウスを前提に設計されています。現代のほぼすべてのマウスとOSでleft・rightクリックはサポートされていますが、macOSの場合はホイールを押し込むことで発動するmiddleクリックボタンが通常存在していないため、PyMOLの3-button Modeで設定されている操作を行うことができません。

この場合はconfig_mouseコマンドを使って、PyMOLのマウス操作モードを変更することができます。

config_mouse <ring>

<ring>には以下の値を指定できます。

  maestro                 three_button_editing    two_button_editing
  one_button              three_button_motions    two_button_viewing
  three_button            three_button_viewing
  three_button_all_modes  two_button

例えば、macOSでmiddleクリックがない場合は、以下のように設定することで、PyMOLのマウス操作を2ボタンモードに変更できます。

config_mouse two_button

PyMOL マウスでのボタン操作の変更

各操作モードでのボタンを押したときのアクションの割当を変更したい場合は、buttonコマンドを使います。以下は、Ctrlキーとマウスの右ボタンに、選択オブジェクトを平行移動させられるようにするMovOを割り当てるための設定です。MovOはMDシミュレーションの準備などで使うことがあるのですが、Middleクリックにしか割り当てられていない都合上、トラックパッドしかない状態で行うことができず困ることがありました。 しかしこの設定を適用すればそれが可能になります。

button right, Ctrl, movo

第1引数にはleft, middle, right, wheel, double_left, double_middle, double_right, single_left, single_middle, single_rightのいずれかを指定します。第2引数にはNone, Shft, Ctrl, CtSh, CtAl, CtASなどの修飾キーを指定します。第3引数には、PyMOLで定義されているアクション名を指定します。

    actions = None, Rota, Move, MovZ, Slab, +Box, -Box, Clip, MovS,
        +/-, PkAt, Pk1, MvSZ, Sele, Orig, Menu, PkAt, Pk1 RotO, MovO,
        MvOZ, MovA, PkAt, PkTB, MvSZ MvAZ, DrgM, RotZ, PkBd, ClpN,
        ClpF

この設定を行うことで、右下のCtrl-R部分にMovOの文字が現れます。

Before (チェインはUNHCRカラーリングです):

scshot 2025-07-06 1.18.47.png

After:

scshot 2025-07-06 1.19.01.png

MovOコマンドがCtrl-右クリックで使えるようになりました。片方のChainをextractしてobj01とした後、Ctrl-右クリック(トラックパッドでは二本指)を押しながらのMovOでオブジェクトを移動させることができます。

scshot 2025-07-06 1.19.43.png

なお、この設定を行った後にPyMOLのマウス操作モードを変更した場合、モードを元に戻すとその設定は失われてしまいます。デフォルトでこれを永続的に固定することはできないので注意してください。
もし本気で永続的に変更したい場合は、インストールされたPyMOLの中にあるpython3.xx/site-packages/pymol/controlling.pyの設定値を直接変更すれば可能かもしれません。

pymol キーバインド変更

set_keyコマンドを使うと、PyMOLのキーバインドを設定・変更できます。以下はCtrlと右矢印キーに、「選択範囲へのセンタリング」を割り当てる例です。

set_key CTRL-right, cmd.center('sele')

cmd.center('sele')は、選択範囲を画面の中心に移動するPyMOLのコマンドです。本来センタリングしたい場合はcenter seleと打ち込むことで可能ですが、set_keyでコマンドを指定する場合はPyMOL APIのcmdを使って指定することになります。

6
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?