Grepset

From PyMOLWiki
Revision as of 06:03, 24 September 2010 by Speleo3 (talk | contribs) (prevent empty list argument for max())
Jump to navigation Jump to search

Use this little script to explore PyMOL's myriad settings.

Usefull for newbies and those with not so good memory skills...

To use:

  1. put the script in a file called grepset.py
  2. from within PyMOL execute run grepset.py
  3. try it out, see examples below.

Example 1: grepset light

cartoon_highlight_color        default
dot_lighting                   on
light                          [ -0.40000, -0.40000, -1.00000 ]
mesh_lighting                  off
two_sided_lighting             off
5 settings matched

Example 2: grepset trans

cartoon_transparency           0.00000
ray_transparency_contrast      1.00000
ray_transparency_shadows       1
ray_transparency_spec_cut      0.90000
ray_transparency_specular      0.40000
sphere_transparency            0.00000
stick_transparency             0.00000
transparency                   0.00000
transparency_mode              2
transparency_picking_mode      2
10 settings matched

Example 3: grepset ^trans

transparency                   0.00000
transparency_mode              2
transparency_picking_mode      2
3 settings matched

The Script itself: grepset.py

from pymol import cmd
import re
import pymol.setting

def grepset(regexp=''):
    '''
DESCRIPTION
    "grepset" greps through the list of settings using a python
    regular expression as defined in the 're' module.
    It returns a list of settings/values matching the regexp.
    No regexp returns every setting.

USAGE
    grepset [regexp]

EXAMPLE
    grepset line
    grepset ray
    grepset (^line|color$)

SEE ALSO
	Python re module
    '''

    count = 0
    regexp = re.compile(regexp)
    matches = []
    for a in pymol.setting.get_index_list():
        setting = pymol.setting._get_name(a)
        if regexp.search(setting):
            count += 1
            matches.append( (setting, cmd.get_setting_text(a, '', -1)) )
    # max length of the setting names that matched
    maxlen = max([len(s[0]) for s in matches] + [0])
    fmt = "%%-%ds : %%s" % (maxlen,)
    for setting in matches:
        print fmt % setting
    print '%d settings matched' % (count,)
    cmd.set('text', 1)
cmd.extend('grepset', grepset)

Author: Ezequiel (Zac) Panepucci