Source code for psico.setting

'''
(c) 2011 Thomas Holder, MPI for Developmental Biology

License: BSD-2-Clause
'''

from pymol import cmd


[docs] def save_settings(filename='~/.pymolrc-settings.py', quiet=1, *, _self=cmd): ''' 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('Warning: filename should end with ".py"') # temporatily load default settings and remember them _self.reinitialize('store_defaults') _self.reinitialize('original_settings') original = [(name, _self.get(name)) for name in get_name_list()] _self.reinitialize('settings') # dump to file filename = cmd.exp_path(filename) f = open(filename, 'w') f.write('# AUTOGENERATED FILE\n') f.write('from pymol import cmd, invocation\n') f.write('if invocation.options.show_splash: ') # no newline f.write(' print("Loading settings from " + ' + repr(filename) + ')\n') count = 0 for name, o_value in original: value = _self.get(name) if value != o_value: f.write('cmd.set("%s", %s)\n' % (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))
[docs] def paper_settings(fancy=0, quiet=0, *, _self=cmd): ''' DESCRIPTION Set rendering quality high and some stuff good for printing: * Side chain helper (cartoon_side_chain_helper = 1) * No shadows (ray_shadows = 0) ARGUMENTS fancy = 0 or 1: set cartoon_fancy_helices and cartoon_highlight_color {default: 0} NOTES You may also try "set ray_trace_mode, 1" ''' fancy, quiet = int(fancy), int(quiet) if fancy == 1: _self.set('cartoon_fancy_helices', 1, quiet=quiet) _self.set('cartoon_highlight_color', 'grey50', quiet=quiet) _self.set('cartoon_side_chain_helper', 1, quiet=quiet) _self.set('ray_shadows', 0, quiet=quiet) _self.set('opaque_background', 0, quiet=quiet) _self.bg_color('white')
[docs] class set_temporary(object): ''' DESCRIPTION API only. Supports the following pattern: >>> with set_temporary(pdb_retain_ids=1): ... cmd.save('out.pdb') ''' def __init__(self, *args, _self=cmd, **kwargs): self._self = _self self.sele = kwargs.pop('selection', '') self.args = args + tuple(kwargs.items()) def __enter__(self): self.saved = [] for k, v in self.args: v_saved = self._self.get(k, self.sele) if v != v_saved: self.saved.append((k, v_saved)) self._self.set(k, v, self.sele) return self def __exit__(self, type, value, traceback): for k, v in self.saved: self._self.set(k, v, self.sele)
cmd.extend('save_settings', save_settings) cmd.extend('paper_settings', paper_settings) # vi:expandtab:smarttab