Difference between revisions of "Grepset"

From PyMOLWiki
Jump to navigation Jump to search
(Modified script to format output according to max length of matched settings.)
Line 45: Line 45:
 
<source lang="python">
 
<source lang="python">
 
from pymol import cmd
 
from pymol import cmd
 +
import re
 
import pymol.setting
 
import pymol.setting
  
 
def grepset(regexp=''):
 
def grepset(regexp=''):
  '''
+
    '''
 
DESCRIPTION
 
DESCRIPTION
  "grepset" greps through the list of settings using a python
+
    "grepset" greps through the list of settings using a python
  regular expression as defined in the 're' module.
+
    regular expression as defined in the 're' module.
  It returns a list of settings/values matching the regexp.
+
    It returns a list of settings/values matching the regexp.
  No regexp returns every setting.
+
    No regexp returns every setting.
  
 
USAGE
 
USAGE
  grepset [regexp]
+
    grepset [regexp]
  
 
EXAMPLE
 
EXAMPLE
  grepset line
+
    grepset line
  grepset ray
+
    grepset ray
 +
    grepset (^line|color$)
  
 
SEE ALSO
 
SEE ALSO
  Python re module
+
Python re module
  '''
+
    '''
 
 
  from re import compile
 
 
 
  count=0
 
  regexp=compile(regexp)
 
  for a in pymol.setting.get_index_list():
 
      setting=pymol.setting._get_name(a)
 
      if regexp.search(setting):
 
        count = count + 1
 
        print '%-30s %s' % (setting, cmd.get_setting_text(a,'',-1))
 
 
 
  print '%d settings matched' % count
 
cmd.extend('grepset',grepset)
 
  
 +
    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])
 +
    fmt = "%%-%ds : %%s" % (maxlen,)
 +
    for setting in matches:
 +
        print fmt % setting
 +
    print '%d settings matched' % (count,)
 +
    cmd.set('text', 1)
 +
cmd.extend('grepset', grepset)
 
</source>
 
</source>
  

Revision as of 05:35, 5 November 2009

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])
    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