| PyMOL |
![]() |
Every script which adds functionality to PyMOL by binding new commands, hotkeys or plugin menu entries can be considered a PyMOL extension.
When writing an extension, you should focus on first exposing functionality as commands. New commands are registered with cmd.extend. If applicable use arguments and default values like selection=all, state=0 and quiet=1. Write a docstring with DESCRIPTION, ARGUMENTS and EXAMPLES, following the style of core PyMOL commands.
PyMOL's Python API is exposed with the pymol.cmd object. Every Python script should start with:
from pymol import cmdExample:
from pymol import cmd
@cmd.extend
def residue_stats(selection='all', quiet=1):
'''
DESCRIPTION
Count how often each residue is contained in the selection.
USAGE
residue_stats [ selection ]
EXAMPLE
fetch 1ubq, async=0
residue_stats 1ubq
'''
from collections import defaultdict
rescounts = defaultdict(int)
cmd.iterate('name CA and (' + selection + ')',
'rescounts[resn] += 1',
space={'rescounts': rescounts})
if not int(quiet):
for resn, count in rescounts.items():
print(resn + ': ' + str(count))
return rescounts
Write a formula command that computes the chemical formula of a selection. You'll probably need:
Typing "help formula" should show the following:
USAGE
formula [ selection [, quiet ]]
EXAMPLE
PyMOL>formula organic
FORMUL P3 C21 H26 O17 N7 2-
Argument auto-completion is defined with cmd.auto_arg. Read the PyMOLWiki page and add auto-completion to the formula command.
Get pairwise distances after alignment and/or superposition. You'll need:
© 2017 Schrödinger, Inc.