def make3Dboxviewer(self, target): """ create the config camera and add the default box object""" # grid cam name name = 'gridcam' if self.app.viewer == None: # XXX reinitialize fonts? self.app.viewer = RaccoonPmvCamera.EmbeddedMolViewer() self.app.molviewer = self.app.viewer.mv self.app.parent.bind_all('<F12>', self.app.viewer.togglepmv) # adding config camera if self.camera == None: self.camera = self.app.viewer.addCamera(target, name) self.camera_name = name from DejaVu.Box import Box from MolKit import Read self.Box3D = Box('Grid_box') self.Box3D.Set(xside=0.001, yside=0.001, zside=0.001) self.app.molviewer.GUI.VIEWER.AddObject(self.Box3D) self.app.viewer.cameras[name]['structures'].append(self.Box3D)
def doit(self, nodes, showPacking=False, **kw): if nodes is None or not nodes: return # Check the validity of th molecules = nodes.top.uniq() molecule = molecules[0] if not hasattr(mol, 'spaceGroup'): return matrices = instanceMatricesFromGroup(molecule) geom = molecule.geomContainer.geoms['master'] geom.Set(instanceMatrices=matrices) #packing if not molecule.geomContainer.geoms.has_key('Unit Cell'): fractCoords = ((1, 1, 0), (0, 1, 0), (0, 0, 0), (1, 0, 0), (1, 1, 1), (0, 1, 1), (0, 0, 1), (1, 0, 1)) coords = [] coords = molecule.crystal.toCartesian(fractCoords) box = Box('Unit Cell', vertices=coords) self.vf.GUI.VIEWER.AddObject(box, parent=geom) molecule.geomContainer.geoms['Unit Cell'] = box
def guiCallback(self): molNames = [] for mol in self.vf.Mols: if hasattr(mol, 'spaceGroup'): molNames.append(mol.name) if not molNames: tkMessageBox.showinfo( "Crystal Info is Needed", "No Molecule in the Viewer has Crystal Info.") return ifd = InputFormDescr(title='Crystal Info') ifd.append({ 'name': 'moleculeList', 'widgetType': Pmw.ScrolledListBox, 'tooltip': 'Select a molecule with Crystal Info.', 'wcfg': { 'label_text': 'Select Molecule: ', 'labelpos': 'nw', 'items': molNames, 'listbox_selectmode': 'single', 'listbox_exportselection': 0, 'usehullsize': 1, 'hull_width': 100, 'hull_height': 150, 'listbox_height': 5 }, 'gridcfg': { 'sticky': 'nsew', 'row': 1, 'column': 0 } }) val = self.vf.getUserInput(ifd, modal=1, blocking=1) if val: molecule = self.vf.getMolFromName(val['moleculeList'][0]) matrices = instanceMatricesFromGroup(molecule) geom = molecule.geomContainer.geoms['master'] geom.Set(instanceMatrices=matrices) if not molecule.geomContainer.geoms.has_key('Unit Cell'): fractCoords = ((1, 1, 0), (0, 1, 0), (0, 0, 0), (1, 0, 0), (1, 1, 1), (0, 1, 1), (0, 0, 1), (1, 0, 1)) coords = [] coords = molecule.crystal.toCartesian(fractCoords) box = Box('Unit Cell', vertices=coords) self.vf.GUI.VIEWER.AddObject(box, parent=geom) molecule.geomContainer.geoms['Unit Cell'] = box ifd = InputFormDescr(title='Crystal Options') visible = molecule.geomContainer.geoms['Unit Cell'].visible if visible: showState = 'active' else: showState = 'normal' ifd.append({ 'name': 'Show Cell', 'widgetType': Tkinter.Checkbutton, 'text': 'Hide Unit Cell', 'state': showState, 'gridcfg': { 'sticky': Tkinter.W }, 'command': CallBackFunction(self.showUnitCell, molecule) }) ifd.append({ 'name': 'Show Packing', 'widgetType': Tkinter.Checkbutton, 'text': 'Hide Packing', 'state': 'active', 'gridcfg': { 'sticky': Tkinter.W }, 'command': CallBackFunction(self.showPacking, molecule) }) val = self.vf.getUserInput(ifd, modal=0, blocking=1) if not val: geom.Set(instanceMatrices=[numpy.eye(4, 4)]) molecule.geomContainer.geoms['Unit Cell'].Set(visible=False)
class ConfigTab(rb.TabBase, rb.RaccoonDefaultWidget): def __init__(self, app, parent, debug=False): rb.TabBase.__init__(self, app, parent, debug = False) rb.RaccoonDefaultWidget.__init__(self, parent) self.resource = self.app.resource self.dockengine = self.app.dockengine self.app.eventManager.registerListener(RaccoonEvents.SetDockingEngine, self.handleEngine) self.app.eventManager.registerListener(RaccoonEvents.ReceptorListChange, self.setReceptorList) self.app.eventManager.registerListener(RaccoonEvents.ReceptorListChange, self.nuke) self.camera = None # embedded camera object self._loaded_struct = [] self._boxevent = RaccoonEvents.SearchConfigChange() self._searchevent = None # XXX TODO? # switch for loading multiple receptors in the viewer self.recLoaderMultiMode = tk.BooleanVar(value=False) self._currRec = []# [ { 'name':xxxx, 'obj':[ rigid, flex ], 'fname':xxxx }, ... ] self.initIcons() self.makeInterface() def initIcons(self): """ initialize the icons for the interface""" icon_path = CADD.Raccoon2.ICONPATH f = icon_path + os.sep + 'system.png' self._ICON_sys = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'center_mol.png' self._ICON_center_mol = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'center_all.png' self._ICON_center_all = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'center_box.png' self._ICON_center_box = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'water.png' self._ICON_water = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'floppy.png' self._ICON_floppy = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'open.png' self._ICON_open = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'default.gif' self._ICON_default = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'singleMol.png' self._ICON_single = ImageTk.PhotoImage(Image.open(f)) f = icon_path + os.sep + 'multiMol.png' self._ICON_multi = ImageTk.PhotoImage(Image.open(f)) def handleEngine(self, event=None): """ handle widget display for different engines """ #print "DD_CONFIG> EVENT notified that docking engine is now [%s]" % event.dockingengine self.dockengine = event.dockingengine def openConfig(self, fname = None): """ import data from a vina config """ ad_ext = ("*.dpf", "*.DPF") ag_ext = ("*.gpf", "*.GPF") vina_ext = ("*.conf", "*.CONF") anyfile = ("Any file...", ("*")) if fname == None: if self.dockengine == 'vina': t = 'Select Vina config file to import' ftypes = [("Vina config file", vina_ext), anyfile ] elif self.dockingengine == 'ad': t = 'Select AutoDock/AutoGrid parameter files to import' ftypes = [ ("AutoDock parameter file", ad_ext), ("AutoGrid parameter file", ag_ext), anyfile ] fname = tfd.askopenfilename(parent=self.frame, title=t, filetypes = ftypes) if not fname: return #print "GOT FNAME[%s]" % fname if not fname: return # parse vina config if self.dockengine == 'vina': accepted = self._loadvinaconf(fname) # parse ad configs elif self.dockingengine =='ad': name, ext = os.path.splitext(fname) if ext.lower() == 'dpf': accepted = self._loaddpf(fname) elif ext.lower() == 'gpf': accepted = self._loadgpf(fname) t = 'Docking parameters' if len(accepted): m = ('The following docking parameters ' 'have been accepted:\n\n%s' ) % ("\n".join(accepted)) i = 'info' else: m = ('No docking parametes have been imported!\n' 'Inspect the config file and try again') i = 'error' tmb.showinfo(parent=self.frame, title=t, message=m, icon=i) self.app.eventManager.dispatchEvent(self._boxevent) # XXX TODO # self.app.eventManager.dispatchEvent(self._searchevent) def _loadvinaconf(self, fname, quiet=False): """ actual parser of vina CONF file """ accepted = [] # load data config = self.app.engine.gridBoxFromConf(fname) if not config: if not quiet: t = 'Config file error' m = ('There was an error loading the config file.\n' 'Inspect it and try again...') i = 'error' tmb.showinfo(parent=self.frame, title=t, message=m, icon=i) return False # center center = [ config[k] for k in 'center_x', 'center_y', 'center_z' ] if self.app.engine.setBoxCenter(center): for i in range(3): self._thumbw_array[i].set( center[i]) accepted.append('center') # size size = [ config[k] for k in 'size_x', 'size_y', 'size_z' ] if self.app.engine.setBoxSize(size): for i in range(3): self._thumbw_array[i+3].set( size[i]) accepted.append('size') # search parms for k in ['exhaustiveness', 'num_modes', 'energy_range']: if not config[k] == None: v = config[k] self.app.engine.vina_settings[k] = v self.vinaWidgets[k].setvalue(v) accepted.append(k) # dispatch config EVENT #event = RaccoonEvents.SearchConfigChange() self.app.eventManager.dispatchEvent(self._boxevent) return accepted def _loaddpf(self, fname): """ """ # load data # set widgets pass def _loadgpf(self, fname): """ """ # load data # set widgets pass def saveConfig(self): """ """ pass def setWheelBox(self, wheelname, value): """ wheel callback that sets center/size values in the docking engine """ cx, cy, cz = self.app.engine.box_center sx, sy, sz = self.app.engine.box_size if wheelname=='center_x': cx = value elif wheelname=='center_y': cy = value elif wheelname=='center_z': cz = value elif wheelname=='size_x': sx = value elif wheelname=='size_y': sy = value elif wheelname=='size_z': sz = value self.app.engine.box_center = [ cx, cy, cz ] self.app.engine.box_size = [ sx, sy, sz ] for i in self.app.engine.box_center : if i == None: return self.Box3D.Set(center = (cx, cy, cz)) self.Box3D.Set(xside=sx, yside=sy , zside=sz) self.app.eventManager.dispatchEvent(self._boxevent) # if a full triplet is defined, sync the data with the engine config internals if not None in self.app.engine.box_center: self.app.engine.setBoxCenter( self.app.engine.box_center ) if not None in self.app.engine.box_size: self.app.engine.setBoxSize( self.app.engine.box_size ) def makeInterfaceLocal(self): """filler for now""" pass def makeInterfaceOpal(self): """ """ pass def makeInterface(self): """ create interface for ssh """ self.resetFrame() colors = { 'center_x' : '#ff3333', 'center_y' : 'green', 'center_z' : '#00aaff', 'size_x' : '#ff3333', 'size_y' : 'green', 'size_z' : '#0099ff', } frame_set = { 'ring_bd' : 1, 'ring_highlightbackground' :'black', 'ring_borderwidth' : 2, 'ring_highlightcolor' : 'black', 'ring_highlightthickness' : 1, 'ring_relief' : 'flat', 'groupchildsite_bg':'white', 'groupchildsite_relief':'sunken','ring_bg':'white', 'tag_bd' : '1', 'tag_highlightbackground' :'black', 'tag_borderwidth':2, 'tag_highlightcolor' : 'black', 'tag_highlightthickness': 1} frame_set = { 'ring_bd' : 1, 'ring_highlightbackground' :'black', 'ring_borderwidth' : 2, 'ring_highlightcolor' : 'black', 'ring_highlightthickness' : 1, 'ring_relief' : 'flat'} frame_set = {} bset = { 'bg' : '#95bed5', 'width' : 22, 'height': 22, 'relief' : 'raised'} bset = { 'bg' : '#2e363b', 'width' : 22, 'height': 22, 'relief' : 'raised'} bset = { 'bg' : '#a6abae', 'width' : 22, 'height': 22, 'relief' : 'raised'} bset = { 'bg' : '#969b9d' } # 'width' : 22, 'height': 22, 'relief' : 'raised'} bset = {} bset.update(self.BORDER) # left frame lframe = tk.Frame(self.frame) # button tollbar tk.Frame(lframe, height=7).pack(expand=0, fill='x', padx=0, pady=0, side='top', anchor='n') # minispacer bframe = tk.Frame(lframe) b = tk.Button(bframe, text='Load...', command = self.openConfig, image= self._ICON_open, compound='left', height=14,**bset) b.pack(expand=1,fill='x', anchor='w', side='left',padx=1) b.pack(expand=1,fill='x', anchor='w', side='left',padx=1) bframe.pack(expand=0, fill='x', padx=0, pady=0, side='top', anchor='n') ########################## center wheels self._thumbw_array = [] c_group = Pmw.Group(lframe, tag_text='Center', tag_font=self.FONTbold, **frame_set) for lab in ['center_x', 'center_y', 'center_z']: cb = CallbackFunction(self.setWheelBox, lab) tw = ThumbWheel( c_group.interior(), labCfg={'text':lab, 'side':'left','fg':colors[lab], 'bg':'black', 'width':9 }, showLabel=1, width=90, height=14, type=float, value=0.0, callback=cb, continuous=True, oneTurn=5, wheelPad=0) tw.pack(side='top', pady=2,anchor='n') self._thumbw_array.append(tw) c_group.pack(side='top', anchor='n', expand=0,fill='x',ipadx=2,ipady=3, padx=1) ########################## size wheels s_group = Pmw.Group(lframe, tag_text='Size', tag_font=self.FONTbold, **frame_set) for lab in ['size_x', 'size_y', 'size_z']: cb = CallbackFunction(self.setWheelBox, lab) tw = ThumbWheel( s_group.interior(), labCfg={'text':lab, 'side':'left','fg':colors[lab], 'bg':'black', 'width':9 }, showLabel=1, width=90, height=14, type=float, value=0.0, min=0.0001, callback=cb, continuous=True, oneTurn=5, wheelPad=0) tw.pack(side='top', pady=2,anchor='n') self._thumbw_array.append(tw) s_group.pack(side='top', anchor='n', expand=0,fill='x',ipadx=2,ipady=3, padx=1,pady=2) ########################## search settings self.searchparmgroup = Pmw.Group(lframe, tag_text='Search parameters', tag_font=self.FONTbold, **frame_set) # autodock search parms self.buildSearchADPanel(target = self.searchparmgroup ) # vina search parms self.buildSearchVinaPanel(target = self.searchparmgroup ) self.searchparmgroup.pack(side='top', anchor='n', expand=0,fill='x',ipadx=2,ipady=3, padx=1,pady=5) ########################## Receptors self._receptors_group = Pmw.Group(lframe, tag_text='Receptor list', tag_font=self.FONTbold,collapsedsize=3, **frame_set) # important self.receptorListbox = Pmw.ScrolledListBox(self._receptors_group.interior(), listbox_highlightbackground = 'black', # selectioncommand=self.loadreceptor, listbox_selectbackground='yellow') self.receptorListbox.pack(expand=1, fill='both',padx=3, pady=0) self.receptorListbox.component('listbox').bind('<ButtonRelease-1>', self.loadreceptor) self.receptorListbox.component('listbox').bind('<Button-3>', self._delreceptor) tb = tk.Frame(self._receptors_group.interior()) # single-multi load buttons self.recLoaderMode_single = tk.Radiobutton(tb, text='Single', image = self._ICON_single, indicatoron=False, variable=self.recLoaderMultiMode, value = False, compound='left', height=16, **bset) self.recLoaderMode_single.pack(anchor='n', side='left',pady=1,expand=1,fill='x',padx=1) self.recLoaderMode_multi = tk.Radiobutton(tb, text='Multi', image = self._ICON_multi, indicatoron=False, variable=self.recLoaderMultiMode, value = True, compound='left', height=16, **bset) self.recLoaderMode_multi.pack(anchor='n', side='left',pady=1,expand=1,fill='x',padx=1) tb.pack(expand=0, fill='x',anchor='s',side='bottom',padx=3) self._receptors_group.pack(side='bottom', anchor='n', expand=1, fill='both',ipadx=4,ipady=4, padx=1,pady=0) lframe.pack(side = 'left', anchor='n', expand='n', fill='y', padx=0, pady=0) ###### 3D Viewer rframe = tk.Frame(self.frame) spacer = tk.Frame(rframe, width=5) #, bg='red') spacer.pack(expand=0,fill='y',side='left',anchor='w') spacer.pack_propagate(0) vgroup = Pmw.Group(rframe, tag_text = '3D viewer', tag_font=self.FONTbold,groupchildsite_bg='black', **frame_set) # TOOLBAR vtoolbar = tk.Frame(vgroup.interior()) vtoolbar.pack(side='left', anchor='w', expand=0, fill='y') cb = CallbackFunction(self.centerView, None) tk.Button(vtoolbar, text='Center\nall', image = self._ICON_center_all, width=22, height=22, command=cb, **bset).pack(anchor='n', side='top') cb = CallbackFunction(self.centerView, 'mol') tk.Button(vtoolbar, text='Center\nmol', image = self._ICON_center_mol, width=22, height=22, command=cb, **bset ).pack(anchor='n', side='top') cb = CallbackFunction(self.centerView, 'box') tk.Button(vtoolbar, text='Center\nbox', image = self._ICON_center_box, width=22, height=22, command=cb, **bset ).pack(anchor='n', side='top',pady=1) # 3d Viewer settings XXX TODO #tk.Button(vtoolbar, text='Settings', image = self._ICON_sys, width=22, height=22, **bset).pack(anchor='n', side='top') vgroup.pack(side='right', anchor='e', expand=1, fill='both', padx=0, pady=0) # 3D viewer self.make3Dboxviewer(vgroup.interior()) rframe.pack(side = 'right', anchor='n', expand=1, fill='both',padx=0, pady=0) if self.app.dockengine == 'vina': self.setSearchParmsVina() elif self.app.dockengine == 'autodock': self.setSearchParmsAD() self.frame.pack(expand=1, fill='both',anchor='n', side='top') def _delreceptor(self, event=None): """ """ return # XXX TODO TO REMOVE RECEPTORS FROM HERE parent = self.receptorListbox try: sel = parent.getvalue() #print "SEL", sel menu = tk.Menu(parent=parent, tearoff=False, takefocus=1) txt = 'Delete "%s"' % sel menu.add_command(txxt, state='normal', command = self.receptor) except: #print "nothing" pass def make3Dboxviewer(self, target): """ create the config camera and add the default box object""" # grid cam name name = 'gridcam' if self.app.viewer == None: # XXX reinitialize fonts? self.app.viewer = RaccoonPmvCamera.EmbeddedMolViewer() self.app.molviewer = self.app.viewer.mv self.app.parent.bind_all('<F12>', self.app.viewer.togglepmv) # adding config camera if self.camera == None: self.camera = self.app.viewer.addCamera(target, name) self.camera_name = name from DejaVu.Box import Box from MolKit import Read self.Box3D = Box('Grid_box') self.Box3D.Set(xside=0.001, yside=0.001, zside=0.001) self.app.molviewer.GUI.VIEWER.AddObject(self.Box3D) self.app.viewer.cameras[name]['structures'].append(self.Box3D) def centerView(self, target=None, event=None): """ center view in the 3D config viewer""" #root = self.app.viewer.rootObject showBox = False if target == 'box': print "Center box" item = self.Box3D elif target == 'mol': print "center mol" self.Box3D.visible = False item = None showBox = True else: print "CENTER ALL" item = None self.app.viewer.centerView(item) if showBox: self.Box3D.visible = True def getRecLoaderMode(self): """ check the value of variable self.recLoaderMultiMode True : keep adding receptors to the current False : delete previous receptors upon loading of the selected one """ return self.recLoaderMultiMode.get() def loadreceptor(self, event=None): """ load the receptor in the viewer deleting previous mols if necessary """ # TOP # TOP ###################### self.receptorListbox.component('listbox').unbind('<ButtonRelease-1>') try: recname = self.receptorListbox.getvalue()[0] except: self.receptorListbox.component('listbox').bind('<ButtonRelease-1>', self.loadreceptor) return mode = 'single' if self.recLoaderMultiMode.get() == 1: mode = 'multi' cam = self.camera_name viewer = self.app.viewer #print "Loading rec", recname, #print "MODE", mode self.app.setBusy() if mode == 'single' and len(self._currRec)>1: # delete non-main for i in range(len(self._currRec)-1): obj = self._currRec[i+1]['obj'] for o in obj: viewer.deleteInCamera(o,cam) self._currRec.pop(i+1) recfiles = self.app.engine.getRecFiles(recname) recfname = recfiles[0] for i in range(len(self._currRec)): rec = self._currRec[i] if (rec['name'] == recname) and (rec['fname'] == recfname): if i == 0: # already loaded and main self.receptorListbox.component('listbox').bind('<ButtonRelease-1>', self.loadreceptor) self.app.setReady() return else: # already loaded but not main # put selected mol as first self._currRec = [ self._currRec[i] ] + self._currRec[:i] + self._currRec[i+1:] # FIXME apply STYLES (main, secondary) self.app.setReady() return # the current main is not the selected one if mode == 'single' and len(self._currRec) > 0: obj = self._currRec[0]['obj'] for o in obj: viewer.deleteInCamera(o, cam) self._currRec = [] newrec = { 'name' : recname, 'fname' : recfname } newrec['obj'] = [ viewer.loadInCamera(f, cam) for f in recfiles ] self._currRec = [newrec] + self._currRec self.receptorListbox.component('listbox').bind('<ButtonRelease-1>', self.loadreceptor) self.app.setReady() def nuke(self, event=None): """ remove all currently loaded receptors""" # we need to protect the box! #print "NUKE CALLED" for rec in self._currRec: #print "DELETING REC", rec for o in rec['obj']: self.app.viewer.deleteInCamera(o, self.camera_name) self._currRec = [] def buildSearchVinaPanel(self, target): """ create the panel with vina search settings""" try: # avoid double packaging self.searchParmVinaPanel return except: f = self.searchParmVinaPanel = tk.Frame(target.interior()) target.configure(tag_text = 'Search parameters [ VINA ]') self.vinaWidgets = {} # exhaustiveness tk.Label(f, text='exhaustiveness', width =15,anchor='e').grid(row=1,column=1,sticky='we',padx=5) self.searchParmVina_exhaustiveness = Pmw.EntryField( f, validate = hf.validatePosNonNullInt, entry_justify='right', entry_width=8) self.searchParmVina_exhaustiveness.grid(row=1, column=2,sticky='we',columnspan=1) def d(event=None): self.setDefSearchParmVina('exhaustiveness') tk.Button(f, text='D', image=self._ICON_default, command=d).grid(row=1,column=3, sticky='e') self.vinaWidgets['exhaustiveness'] = self.searchParmVina_exhaustiveness # num modes tk.Label(f, text='num.modes', width =15,anchor='e').grid(row=2,column=1,sticky='we',padx=5) self.searchParmVina_nummodes = Pmw.EntryField( f, validate = hf.validatePosNonNullInt, entry_justify='right', entry_width=8) self.searchParmVina_nummodes.grid(row=2, column=2,sticky='we',columnspan=1) def d(event=None): self.setDefSearchParmVina('num.modes') tk.Button(f, text='D',image=self._ICON_default, command=d).grid(row=2,column=3, sticky='e') self.vinaWidgets['num_modes'] = self.searchParmVina_nummodes # energy range tk.Label(f, text='energy range', width =15,anchor='e').grid(row=3,column=1,sticky='we',padx=5) self.searchParmVina_energyrange = Pmw.EntryField( f, validate = hf.validateFloatPos, entry_justify='right', entry_width=8) self.searchParmVina_energyrange.grid(row=3, column=2,sticky='we',columnspan=1) def d(event=None): self.setDefSearchParmVina('energy range') tk.Button(f, text='D', image=self._ICON_default,command=d).grid(row=3,column=3, sticky='e') self.vinaWidgets['energy_range'] = self.searchParmVina_energyrange # executed only the first time self.setDefSearchParmVina() def buildSearchADPanel(self, target): """ create the panel with autodock search settings""" try: # avoid double packaging self.searchParmADPanel return except: f = self.searchParmADPanel = tk.Frame(target.interior()) target.configure(tag_text = 'Search parameters [ AD ]') tk.Label(f, text='GA SETTINGS SHOULD BE HERE', width =15,anchor='w').grid(row=2,column=1,sticky='we') self.setDefSearchParmAD() def setDefSearchParmVina(self, request = None): """ """ #widgets = [ self.searchParmVina_exhaustiveness, # self.searchParmVina_nummodes, # self.searchParmVina_energyrange ] values = [] wid = [] if request in ['exhaustiveness', None]: values.append(8) wid.append(self.vinaWidgets['exhaustiveness']) if request in ['num_modes', None]: values.append(9) wid.append(self.vinaWidgets['num_modes']) if request in ['energy_range', None]: values.append(3) wid.append(self.vinaWidgets['energy_range']) for i in range(len(values)): wid[i].setentry(values[i]) def setDefSearchParmAD(self, value = None): #print "NO DEFAUILT SETTINGS FOR AD YET" return def setSearchParmsVina(self): """ pack and activate the search parms panel for vina """ self.searchParmADPanel.pack_forget() self.searchParmVinaPanel.pack(expand=0,fill='x',anchor='n',padx=0, pady=0) def setSeachParmsAD(self): """ pack and activate the search parms panel for autodock """ self.searchParmVinaPanel.pack_forget() self.searchParmADPanel.pack(expand=0,fill='x',anchor='n',padx=0, pady=0) def getSearchParmVina(self): """ """ widgets = [ self.searchParmVina_exhaustiveness, self.searchParmVina_nummodes, self.searchParmVina_energyrange ] for w in widgets: if not w.valid(): return False return { 'exhaustiveness': self.searchParmVina_exhaustiveness.getvalue(), 'num.modes' : self.searchParmVina_nummodes.getvalue(), 'energyrange': self.searchParmVina_energyrange.getvalue(), } def getSearchParmAD(self): """ """ # walk through ad parms and return settings pass def setReceptorList(self, event=None): """update the list of receptors shown in the picker for the config settings """ self.receptorListbox.clear() self.receptorListbox.setlist(sorted(self.app.engine.RecBook.keys()) )
vi.AddObject(gi, parent=gc) orgaToMasterGeom[ingr] = gi tet = IndexedPolygons('surfaceMesh', vertices=orga.vertices, faces=orga.faces, normals=orga.vnormals, inheritFrontPolyMode=False, frontPolyMode='line', inheritCulling=0, culling='none', inheritShading=0, shading='flat') vi.AddObject(tet, parent=g) # display histo BB hbb = Box('histoVolBB', cornerPoints=h1.boundingBox) vi.AddObject(hbb) if ViewerType == 'dejavu': cp = vi.clipP[0] vi.GUI.clipvar[0][0].set(1) tet.AddClipPlane(cp, 1, False) fpg = Points('notFreePoints') vi.AddObject(fpg) else: fpg = Geom('notFreePoints') vi.AddObject(fpg) if ViewerType == 'dejavu': vi.Reset_cb() vi.Normalize_cb()