Save settings

From PyMOLWiki
Revision as of 12:50, 8 November 2011 by Inchoate (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

save_settings is a prototype implementation to save all settings with non-default values to a file.

By default settings will be stored to ~/.pymolrc-settings.py which is automatically recognised and loaded by PyMOL on startup. You have to manually delete the file if you no more want those settings to be loaded.

This answers a feature request on sourceforge.

Usage

save_settings [ filename ]

The Script

from pymol import cmd

def save_settings(filename='~/.pymolrc-settings.py', quiet=1):
    '''
DESCRIPTION
 
    Dumps all settings with non-default values to ~/.pymolrc-settings.py
 
    Feature Request: Save settings for later use - ID: 1009951
    https://sourceforge.net/tracker/?func=detail&aid=1009951&group_id=4546&atid=354546
    '''
    from pymol.setting import get_name_list
    quiet = int(quiet)
    if not filename.endswith('.py'):
        print 'Error: filename must end with ".py"'
        raise CmdException
    # temporatily load default settings and remember them
    cmd.reinitialize('store_defaults')
    cmd.reinitialize('original_settings')
    original = [(name, cmd.get(name)) for name in get_name_list()]
    cmd.reinitialize('settings')
    # dump to file
    filename = cmd.exp_path(filename)
    f = open(filename, 'w')
    print >> f, '# AUTOGENERATED FILE'
    print >> f, 'from pymol import cmd, invocation'
    print >> f, 'if invocation.options.show_splash:'
    print >> f, '    print "Loading settings from",', repr(filename)
    count = 0
    for name, o_value in original:
        value = cmd.get(name)
        if value != o_value:
            print >> f, 'cmd.set("%s", %s)' % (name, repr(value))
            if not quiet:
                print 'set %s, %s # default: %s' % (name, value, o_value)
            count += 1
    f.close()
    if not quiet:
        print 'Dumped %d settings to %s' % (count, filename)

cmd.extend('save_settings', save_settings)

See Also