# Warren L. DeLano from pymol.wizard import Wizard from pymol import cmd import pymol saved_mode = 2 # toggle saved_scope = 1 # byres saved_what = 3 # sticks saved_color = 5 # magenta class Appearance(Wizard): mode_dict = { 0 : ['Color', '_ cmd.color' ], 1 : ['Color (elem c)', '_ util.color_carbon' ], 2 : ['Toggle','_ cmd.toggle'], 3 : ['Show', '_ cmd.show'], 4 : ['Hide', '_ cmd.hide'], 5 : ['Select', '_ cmd.select'], } what_dict = { 1 : ['Lines', 'lines'], 2 : ['Nonbonded', 'nonbonded' ], 3 : ['Sticks', 'sticks' ], 4 : ['Ribbon', 'ribbon' ], 5 : ['Cartoon', 'cartoon' ], 6 : ['Labels', 'labels' ], 7 : ['Dots', 'dots' ], 8 : ['Spheres', 'spheres' ], 9 : ['NB Spheres', 'nb_spheres' ], 10: ['Mesh', 'mesh' ], 11: ['Surface', 'surface' ], } color_dict = { 1 : ['\\900red', 'red' ], 2 : ['\\090green', 'green' ], 3 : ['\\009blue' , 'blue' ], 4 : ['\\990yellow' , 'yellow' ], 5 : ['\\909magenta', 'magenta' ], 6 : ['\\099cyan' , 'cyan' ], 7 : ['\\955salmon' , 'salmon' ], 8 : ['\\595lime' , 'lime' ], 9 : ['\\967pink' , 'pink' ], 10 : ['\\559slate' , 'slate' ], 11 : ['\\949violet' , 'violet' ], 12 : ['\\950orange' , 'orange' ], 13 : ['\\059marine' , 'marine' ], 14 : ['\\905hotpink' , 'hotpink' ], } scope_dict = { 0: ['By Atom', ''], 1: ['By Residue', 'byres' ], 2: ['By Chain', 'bychain' ], 3: ['By Segment', 'bysegment' ], 4: ['By Object', 'byobject' ], 5: ['By Molecule', 'bymol' ], } def __init__(self,_self=cmd): Wizard.__init__(self,_self) self.cmd.deselect() self.cmd.unpick() self.selection_mode = self.cmd.get_setting_int("mouse_selection_mode") self.cmd.set("mouse_selection_mode",0) # set selection mode to atomic self.current_mode = saved_mode self.current_what = saved_what self.current_scope = saved_scope self.current_color = saved_color self.menu['mode'] = [ [2, 'Mode', '' ], [1, self.mode_dict[0][0], 'cmd.get_wizard().set_mode(0)' ], [1, self.mode_dict[1][0], 'cmd.get_wizard().set_mode(1)' ], [ 0, '' , '' ], [1, self.mode_dict[2][0], 'cmd.get_wizard().set_mode(2)' ], [1, self.mode_dict[3][0], 'cmd.get_wizard().set_mode(3)' ], [1, self.mode_dict[4][0], 'cmd.get_wizard().set_mode(4)' ], # [1, self.mode_dict[5][0], 'cmd.get_wizard().set_mode(4)' ], ] self.menu['what'] = [ [2, 'What', '' ], [1, self.what_dict[1][0], 'cmd.get_wizard().set_what(1)' ], [1, self.what_dict[2][0], 'cmd.get_wizard().set_what(2)' ], [1, self.what_dict[3][0], 'cmd.get_wizard().set_what(3)' ], [1, self.what_dict[4][0], 'cmd.get_wizard().set_what(4)' ], [1, self.what_dict[5][0], 'cmd.get_wizard().set_what(5)' ], [0, '', '' ], [1, self.what_dict[6][0], 'cmd.get_wizard().set_what(6)' ], [0, '', '' ], [1, self.what_dict[7][0], 'cmd.get_wizard().set_what(7)' ], [1, self.what_dict[8][0], 'cmd.get_wizard().set_what(8)' ], [1, self.what_dict[9][0], 'cmd.get_wizard().set_what(9)' ], [0, '', '' ], [1, self.what_dict[10][0], 'cmd.get_wizard().set_what(10)' ], [1, self.what_dict[11][0], 'cmd.get_wizard().set_what(11)' ], ] self.menu['color'] = [ [2, 'Color', '' ], [1, self.color_dict[1][0], 'cmd.get_wizard().set_color(1)' ], [1, self.color_dict[2][0], 'cmd.get_wizard().set_color(2)' ], [1, self.color_dict[3][0], 'cmd.get_wizard().set_color(3)' ], [1, self.color_dict[4][0], 'cmd.get_wizard().set_color(4)' ], [1, self.color_dict[5][0], 'cmd.get_wizard().set_color(5)' ], [1, self.color_dict[6][0], 'cmd.get_wizard().set_color(6)' ], [1, self.color_dict[7][0], 'cmd.get_wizard().set_color(7)' ], [1, self.color_dict[8][0], 'cmd.get_wizard().set_color(8)' ], [1, self.color_dict[9][0], 'cmd.get_wizard().set_color(9)' ], [1, self.color_dict[10][0], 'cmd.get_wizard().set_color(10)' ], [1, self.color_dict[11][0], 'cmd.get_wizard().set_color(11)' ], [1, self.color_dict[12][0], 'cmd.get_wizard().set_color(12)' ], [1, self.color_dict[13][0], 'cmd.get_wizard().set_color(13)' ], [1, self.color_dict[14][0], 'cmd.get_wizard().set_color(14)' ], ] self.menu['scope'] = [ [ 2, 'Scope', ''], [ 1, self.scope_dict[0][0], 'cmd.get_wizard().set_scope(0)' ], [ 1, self.scope_dict[1][0], 'cmd.get_wizard().set_scope(1)' ], [ 1, self.scope_dict[2][0], 'cmd.get_wizard().set_scope(2)' ], [ 1, self.scope_dict[3][0], 'cmd.get_wizard().set_scope(3)' ], [ 1, self.scope_dict[4][0], 'cmd.get_wizard().set_scope(4)' ], [ 0, '' , '' ], [ 1, self.scope_dict[5][0], 'cmd.get_wizard().set_scope(5)' ], ] def set_scope(self,scope): scope = int(scope) if scope in self.scope_dict: self.current_scope = scope self.cmd.refresh_wizard() def set_what(self,what): what = int(what) if what in self.what_dict: self.current_what = what self.cmd.refresh_wizard() def set_color(self,color): color = int(color) if color in self.color_dict: self.current_color = color self.cmd.refresh_wizard() def set_mode(self,mode): mode = int(mode) if mode in self.mode_dict: self.current_mode = mode self.cmd.refresh_wizard() def undo(self): print("no undo!") def get_prompt(self): self.prompt = [] return self.prompt def get_panel(self): panel = [ [ 1, 'Appearance Wizard',''], [ 3, self.mode_dict[self.current_mode][0], 'mode' ], ] if self.current_mode in [0,1]: # color mode panel.append( [ 3, self.color_dict[self.current_color][0], 'color' ]) elif self.current_mode in [2,3,4]: # what mode panel.append( [ 3, self.what_dict[self.current_what][0], 'what' ]) else: # select mode panel.append( [ 1, 'Atoms' , '' ]) panel.extend([ [ 3, self.scope_dict[self.current_scope][0], 'scope' ], # [ 2, 'Undo', 'cmd.get_wizard().undo()' ], [ 2, 'Done','cmd.set_wizard()'], ]) return panel def do_pick(self,bondFlag): if self.current_mode in [0,1]: # color sele = "(%s pk1)"%self.scope_dict[self.current_scope][1] color = self.color_dict[self.current_color][1] mode = self.mode_dict[self.current_mode][1] cmmd = mode+'("%s","%s")'%(color,sele) self.cmd.do(cmmd,log=0) elif self.current_mode in [2,3,4]: # show/hide/toggle sele = "(%s pk1)"%self.scope_dict[self.current_scope][1] what = self.what_dict[self.current_what][1] mode = self.mode_dict[self.current_mode][1] cmmd = mode+'("%s","%s")'%(what,sele) self.cmd.do(cmmd,log=0) else: # select pass self.cmd.unpick() self.cmd.refresh_wizard() return 1 def do_select(self,selection): if self.current_mode in [0,1]: # color sele = "(%s %s)"%(self.scope_dict[self.current_scope][1],selection) color = self.color_dict[self.current_color][1] mode = self.mode_dict[self.current_mode][1] cmmd = mode+'("%s","%s")'%(color,sele) self.cmd.do(cmmd,log=0) elif self.current_mode in [2,3,4]: # show/hide/toggle sele = "(%s %s)"%(self.scope_dict[self.current_scope][1],selection) what = self.what_dict[self.current_what][1] mode = self.mode_dict[self.current_mode][1] cmmd = mode+'("%s","%s")'%(what,sele) self.cmd.do(cmmd,log=0) self.cmd.delete(selection) self.cmd.deselect() self.cmd.unpick() self.cmd.refresh_wizard() return 1 def cleanup(self): self.cmd.set("mouse_selection_mode",self.selection_mode) # restore selection mode global saved_scope saved_scope = self.current_scope global saved_mode saved_mode = self.current_mode global saved_color saved_color = self.current_color global saved_what saved_what = self.current_what