def createlegacypmgapp(): ''' Start a Tk app in separate thread. Returns a "fake" PMGApp instance for legacy support ''' app = pymol.Scratch_Storage() app.root = None app.menuBar = pymol.Scratch_Storage() app.menuBar.addmenuitem = \ app.menuBar.deletemenuitems = \ app.menuBar.addcascademenu = lambda *x, **y: None def starttk(): import Tkinter app.root = Tkinter.Tk() app.root.withdraw() app.root.mainloop() import threading t = threading.Thread(target=starttk, args=()) t.setDaemon(1) t.start() import time wait, maxwait = 0.01, 1.0 while app.root is None and maxwait > 0.0: time.sleep(wait) maxwait -= wait return app
def createlegacypmgapp(): ''' Start a Tk app in separate thread. Returns a "fake" PMGApp instance for legacy support ''' app = pymol.Scratch_Storage() app.root = None app.menuBar = pymol.Scratch_Storage() app.menuBar.addmenuitem = \ app.menuBar.deletemenuitems = \ app.menuBar.addcascademenu = lambda *x, **y: None app.execute = lambda c: eval(c) if isinstance(c, str) else c() return app
def ff_copy(src, dst, _self=cmd): pymol = _self._pymol cmd = _self # NOT THREAD SAFE pymol._rcopy = pymol.Scratch_Storage() pymol._rcopy.pc = {} pymol._rcopy.tt = {} cmd.iterate("(%s)" % src, "_rcopy.pc[name]=partial_charge") cmd.alter("(%s)" % dst, "partial_charge=_rcopy.pc[name]") cmd.iterate("(%s)" % src, "_rcopy.tt[name]=text_type") cmd.alter("(%s)" % dst, "text_type=_rcopy.tt[name]") del pymol._rcopy
def __init__(self, _self=pymol.cmd): #PyMOL pattern Wizard.__init__(self, _self) #PyMOL pattern if self.cmd.get_movie_length() > 0: raise pymol.wizarding.WizardError( 'Mutagenesis Wizard cannot be used with Movie') self.cmd.unpick() self._stored = pymol.Scratch_Storage() self._space = {'stored': self._stored} self._status = Status.NO_SELECTION self._auto_center = "ON" self.mode = DEFAULT_MODE self.rep = DEFAULT_REP self.selection_mode = self.cmd.get_setting_int("mouse_selection_mode") self.cmd.set("mouse_selection_mode", 1) tmp_menu = [[2, 'Mutant', '']] for mode in self._mode_labels: tmp_menu.append( [1, mode, 'cmd.get_wizard().set_mode("' + mode + '")']) self.menu['mode'] = tmp_menu tmp_menu2 = [[2, 'Representation', '']] for rep in self._reps: tmp_menu2.append([ 1, self._rep_name[rep], 'cmd.get_wizard().set_rep("' + rep + '")' ]) self.menu['rep'] = tmp_menu2 tmp_menu = [[2, 'Auto Center', ''], [1, "ON", 'cmd.get_wizard().set_auto_center("ON")'], [1, "OFF", 'cmd.get_wizard().set_auto_center("OFF")']] self.menu['auto_center'] = tmp_menu
def __init__(self,_self=cmd): Wizard.__init__(self,_self) cmd=self.cmd if self.cmd.get_movie_length() > 0: raise pymol.wizarding.WizardError('Mutagenesis Wizard cannot be used with Movie') cmd.unpick() self.stored = pymol.Scratch_Storage() self.space = {'stored': self.stored} self.bump_scores = [] self.dep = default_dep self.ind_library = io.pkl.fromFile(os.environ['PYMOL_DATA']+ "/chempy/sidechains/sc_bb_ind.pkl") self.load_library() self.status = 0 # 0 no selection, 1 mutagenizing self.bump_check = 1 self.auto_center = 1 self.error = None self.object_name = None self.modes = [ 'current' ] self.mode = default_mode self.rep = default_rep self.hyd = default_hyd self.n_cap = default_n_cap self.c_cap = default_c_cap residues = list(self.ind_library.keys()) # could extent with additional fragments manually as below residues.extend(['GLY','ALA']) residues.extend(['HID','HIE','HIP']) residues.extend(['ARGN','LYSN','ASPH','GLUH']) residues.sort() res_copy = deepcopy(residues) for a in res_copy: residues.append('NT_'+a) residues.append('CT_'+a) self.modes.extend(residues) self.mode_label={} for a in self.modes: self.mode_label[a] = ""+a self.mode_label['current']="No Mutant" self.selection_mode = cmd.get_setting_int("mouse_selection_mode") cmd.set("mouse_selection_mode",1) smm = [] smm.append([ 2, 'Mutant', '' ]) smm.append([ 1, 'No change', 'cmd.get_wizard().set_mode("current")' ]) # smm.append([ 1, 'N-Term', [] ]) # smm.append([ 1, 'C-Term', [] ]) smm.append([ 0, '', '' ]) for a in self.modes: if a == 'current': pass elif a[0:3]=='NT_': pass # smm[2][2].append([ 1, self.mode_label[a[3:]], 'cmd.get_wizard().set_mode("'+a+'")']) elif a[0:3]=='CT_': pass # smm[3][2].append([ 1, self.mode_label[a[3:]], 'cmd.get_wizard().set_mode("'+a+'")']) else: smm.append([ 1, self.mode_label[a], 'cmd.get_wizard().set_mode("'+a+'")']) # group arg, lys, his, glu, asp for lst in [ smm ]: # [ smm, smm[2][2], smm[3][2] ]: for a in 'ARG','LYS','HID','GLU','ASP': ix = 0 start = 0 stop = 0 for b in lst: if start==0: if b[1][0:]==a: start = ix stop = ix + 1 elif b[1][0:3]==a[0:3] or ( b[1][0:2]==a[0:2] and a[0:2]=='HI' ): stop = ix + 1 ix = ix + 1 if start!=0 and stop!=0: slice = lst[start:stop] if a != 'HID': slice2 = [slice[0] ] + [ [0,'',''] ] + slice[1:] lst[start:stop] = [ [1, self.mode_label[a] + "... " , slice2 ] ] else: slice2 = [ slice[3] ] + [ [0,'',''] ] + slice[0:3] lst[start:stop] = [ [1, self.mode_label['HIS']+ "... ", slice2 ] ] self.menu['mode']=smm self.reps = [ 'lines', 'sticks', 'spheres', 'dots' ] self.rep_name = { 'lines' : "Show Lines", 'sticks' : "Show Sticks", 'spheres' : "Show Spheres", 'dots' : "Show Dots", } self.dep_name = { 'dep' : "Backbone Depen. Rotamers", 'ind' : "Backbone Indep. Rotamers" } self.hyd_name = { 'auto' : "Hydrogens: Current", 'keep' : "Hydrogens: Add & Retain", # 'polar' : "Polar Hydrogens", 'none' : "Hydrogens: Remove", } self.hyds = [ 'auto', 'keep', 'none' ] self.n_cap_name = { 'none' : 'Open', 'posi' : 'NH3+', 'acet' : 'Acetyl', } self.n_caps = [ 'none', 'posi', 'acet' ] self.c_cap_name = { 'none' : 'Open', 'nega' : 'COO-', 'amin' : 'Amine', 'nmet' : 'N-methyl', } self.c_caps = [ 'none', 'nega', 'amin', 'nmet' ] smm = [] smm.append([ 2, 'N-Cap', '' ]) for a in self.n_caps: smm.append([ 1, self.n_cap_name[a], 'cmd.get_wizard().set_n_cap("'+a+'")']) self.menu['n_cap']=smm smm = [] smm.append([ 2, 'C-Cap', '' ]) for a in self.c_caps: smm.append([ 1, self.c_cap_name[a], 'cmd.get_wizard().set_c_cap("'+a+'")']) self.menu['c_cap']=smm smm = [] smm.append([ 2, 'Hydrogens', '' ]) for a in self.hyds: smm.append([ 1, self.hyd_name[a], 'cmd.get_wizard().set_hyd("'+a+'")']) self.menu['hyd']=smm smm = [] smm.append([ 2, 'Representation', '' ]) for a in self.reps: smm.append([ 1, self.rep_name[a], 'cmd.get_wizard().set_rep("'+a+'")']) self.menu['rep']=smm self.deps = [ 'dep', 'ind' ] smm = [] smm.append([ 2, 'Rotamers', '' ]) for a in self.deps: smm.append([ 1, self.dep_name[a], 'cmd.get_wizard().set_dep("'+a+'")']) self.menu['dep']=smm if 'pk1' in cmd.get_names('selections'): cmd.select(src_sele,"(byres pk1)") cmd.unpick() cmd.enable(src_sele) self.status = 1 self.error = None self.do_library() cmd.refresh_wizard()