def __init__(self, src_path=None):

        self.currentPanelId = -1
        self.panels = []
        self.unique_id = 0

        ModelessDialog.__init__(self)

        self.NULL_PANEL = Panel(-1, self, name="")
        self.NULL_PANEL.cmdStack.delB.configure(state="disabled")
        self.NULL_PANEL.cmdStack.addB.configure(state="disabled")
        self.NULL_PANEL.undoStack.delB.configure(state="disabled")
        self.NULL_PANEL.undoStack.addB.configure(state="disabled")
        self.refreshPanelInfo(-1)

        self.save_path = None
        self.updateWindowTitle()

        self.gTitleOption.set("Chimera Demo")

        if src_path:
            self.loadDemo(src_path)
            self.setSavePath(src_path)
            self.updateWindowTitle()

        self._toplevel.bind('<KeyRelease>', self.keyReleaseCB)
        self._DIRTY = False

        self._cached_save = None
 def __init__(self, residue, resType, lib, sessionData=None):
     self._sesHandlerID = chimera.triggers.addHandler(
         SAVE_SESSION, self._sessionCB, None)
     self.residue = residue
     self.lib = lib
     self.resType = resType
     self.title = "%s Side-Chain Rotamers" % residue
     if sessionData:
         self.bbdep, self.rotamers, self.tableData = sessionData
     else:
         from Rotamers import getRotamers
         self.bbdep, self.rotamers = getRotamers(residue,
                                                 log=True,
                                                 lib=lib,
                                                 resType=resType)
         from Midas import linewidth, color
         linewidth(2, self.rotamers)
         color('byhet', self.rotamers)
         chimera.openModels.add(self.rotamers,
                                sameAs=residue.molecule,
                                hidden=True,
                                noprefs=True)
         registerAttribute(chimera.Molecule, "chis")
         registerAttribute(chimera.Molecule, "rotamerProb")
         self.tableData = None
     self.resHandlerID = chimera.triggers.addHandler(
         'Residue', self._resChangeCB, None)
     self.dependentDialogInfo = [('Clashes', 'clash'), ('H-Bonds', 'hbond'),
                                 ('Density', 'volume')]
     for label, ddn in self.dependentDialogInfo:
         setattr(self, ddn + "Dialog", None)
     ModelessDialog.__init__(self)
示例#3
0
 def __init__(self, models):
     self.models = models
     if len(models) > 1:
         self.title = "Add Note to %d Models" % (len(models))
     else:
         self.title = "Add Note to %s" % models[0].name
     ModelessDialog.__init__(self)
示例#4
0
	def __init__(self, residue, resType, lib, sessionData=None):
		self._sesHandlerID = chimera.triggers.addHandler(SAVE_SESSION,
							self._sessionCB, None)
		self.residue = residue
		self.lib = lib
		self.resType = resType
		self.title = "%s Side-Chain Rotamers" % residue
		if sessionData:
			self.bbdep, self.rotamers, self.tableData = sessionData
		else:
			from Rotamers import getRotamers
			self.bbdep, self.rotamers = getRotamers(residue,
					log=True, lib=lib, resType=resType)
			from Midas import linewidth, color
			linewidth(2, self.rotamers)
			color('byhet', self.rotamers)
			chimera.openModels.add(self.rotamers,
					sameAs=residue.molecule, hidden=True, noprefs=True)
			registerAttribute(chimera.Molecule, "chis")
			registerAttribute(chimera.Molecule, "rotamerProb")
			self.tableData = None
		self.resHandlerID = chimera.triggers.addHandler(
					'Residue', self._resChangeCB, None)
		self.dependentDialogInfo = [('Clashes', 'clash'),
				('H-Bonds', 'hbond'), ('Density', 'volume')]
		for label, ddn in self.dependentDialogInfo:
			setattr(self, ddn + "Dialog", None)
		ModelessDialog.__init__(self)
示例#5
0
    def __init__(self):

        self.director = None
        
        self.this_dir = os.path.split(os.path.abspath(__file__))[0]
        
        ModelessDialog.__init__(self)

        self.cache_width  = None
        self.cache_height = None

        ## get the width and height when the frame options are expanded
        self.frmOptionsFrame.grid(row=FRM_OPTS_ROW ,column=0, columnspan=3, sticky='nsew')
        chimera.tkgui.app.update_idletasks()
        self.frm_width, self.frm_height = \
                        (self.frmOptionsFrame.winfo_width(), self.frmOptionsFrame.winfo_height())
        self.frmOptionsFrame.grid_forget()
        chimera.tkgui.app.update_idletasks()


        ## get the width and height when the movie options are expanded
        self.movOptionsFrame.grid(row=MOV_OPTS_ROW,column=0, columnspan=3, sticky='nsew')
        chimera.tkgui.app.update_idletasks()
        self.mov_width, self.mov_height = \
                        (self.movOptionsFrame.winfo_width(), self.movOptionsFrame.winfo_height())
        self.movOptionsFrame.grid_forget()
        chimera.tkgui.app.update_idletasks()

        w,h = map(int,self.getCurrentDimensions())
        self._toplevel.wm_geometry('%sx%s' % (w+30,h+20))
        
        #self.director.adjustGfxSize()

        chimera.tkgui.app.after(1000, self.showStatus, "Click the record button to start capturing frames")
示例#6
0
 def destroy(self):
     self.mainDialog = None
     if self.readScriptDialog:
         self.readScriptDialog.destroy()
     if self.saveDialog:
         self.saveDialog.destroy()
     ModelessDialog.destroy(self)
示例#7
0
	def destroy(self):
		self.mainDialog = None
		if self.readScriptDialog:
			self.readScriptDialog.destroy()
		if self.saveDialog:
			self.saveDialog.destroy()
		ModelessDialog.destroy(self)
示例#8
0
	def __init__(self, mol=None, seq=None, blastData=None, sessionData=None):
		self.loaded = {}
		self.reference = mol
		if isinstance(self.reference, StructureSequence):
			self.molecule = self.reference.molecule
		elif isinstance(self.reference, Molecule):
			self.molecule = self.reference
		self.sequence = seq	# for session data only
		if seq is None:
			self.seq, self.refResList = self._makeSeq(mol)
		else:
			self.seq = seq
			if self.reference:
				seq, resList = self._makeSeq(mol)
				self.refResList = self._getResidues(self.seq,
								seq, resList)
		if blastData:
			self.initBlast(*blastData)
		else:
			self.initSession(*sessionData)
		self.title = "Blast: %s" % self.basename
		ModelessDialog.__init__(self)
		if not blastData:
			self._updateLoadButton()
		if self.molecule:
			self.closeHandler = chimera.openModels.addRemoveHandler(
						self._modelClosedCB, None)
		else:
			self.closeHandler = None
		self.sesHandler = chimera.triggers.addHandler(
						SAVE_SESSION,
						self._sessionCB, None)
		chimera.extension.manager.registerInstance(self)
示例#9
0
    def __init__(self, src_path = None):
        
        self.currentPanelId = -1
        self.panels = []
        self.unique_id = 0
        
        ModelessDialog.__init__(self)

        self.NULL_PANEL = Panel(-1, self, name="")
        self.NULL_PANEL.cmdStack.delB.configure(state="disabled")
        self.NULL_PANEL.cmdStack.addB.configure(state="disabled")
        self.NULL_PANEL.undoStack.delB.configure(state="disabled")
        self.NULL_PANEL.undoStack.addB.configure(state="disabled")
        self.refreshPanelInfo(-1)
        
        self.save_path = None
        self.updateWindowTitle()

        self.gTitleOption.set("Chimera Demo")

        if src_path:
            self.loadDemo(src_path)
            self.setSavePath(src_path)
            self.updateWindowTitle() 

        self._toplevel.bind('<KeyRelease>', self.keyReleaseCB)
        self._DIRTY = False

        self._cached_save = None
示例#10
0
	def __init__(self, models):
		self.models = models
		if len(models) > 1:
			self.title = "Add Note to %d Models" % (len(models))
		else:
			self.title = "Add Note to %s" % models[0].name
		ModelessDialog.__init__(self)
示例#11
0
    def __init__(self, sessionData=None, *args, **kw):

        self.pausetime = 0.5  #time to wait between submitting a command and checking for output/refreshing the text (seconds)

        self.starttime = time.time()
        self.latvectime = time.time()

        dir, file = os.path.split(__file__)
        icon = os.path.join(dir, 'Lev00Logo.tiff')
        chimera.tkgui.app.toolbar.add(
            icon,
            lambda d=chimera.dialogs.display, n=Lev00Dialog.name: d(n),
            'Run Lev00',
            None)

        self.App = "Lev00"
        self.fulltext = ""
        self.toption = 0
        ModelessDialog.__init__(self, *args, **kw)
        print "In init"

        self.home = os.path.expanduser("~")
        self.appdir = self.home + "/." + self.App

        #check for ~/.Lev00. If it doesn't exist, create it
        if not (os.path.isdir(self.appdir)):
            print "Making ", self.appdir
            os.mkdir(self.appdir)

        self.getShell()

        #Look for the Lev00 root directory. Prompt user if necessary
        self.getappdir()
        #self.rootdir="/Users/ggibb2/Projects/CP2k/lev00_3.49"

        #Ask user to select the working directory
        self.getWorkingDir()

        # Create lev00 process
        self.ChimeraInterface = tetr_lev00_Chimera_plugin.Lev00(
            self.rootdir, self.wkdir, self.myshell)

        self.wdirlabel.config(text="wkdir= '" + self.wkdir + "'")

        # Create variable to store Lev00 output
        self.ChimeraInterfaceOutput = Tk.StringVar()

        time.sleep(self.pausetime)

        #Update the Lev00 text on screen
        self.updateText(self.ChimeraInterface.getOutput())

        #load 'geom.xyz'
        self.ChimeraInterface.refreshGeom()

        #set view options to those selected in the GUI
        self.SetViewOption()

        self.timer()
	def __init__(self, model):
		self.title = 'PDB Headers for %s' % model.name
		self.model = model
		from chimera import preferences
		self.prefs = preferences.addCategory("PDB headers dialog",
				preferences.HiddenCategory,
				optDict={"ordering": "Alphabetical"})
		ModelessDialog.__init__(self)
示例#13
0
	def __init__(self, models):
		self.models = models
		if len(models) > 1:
			name = "Multiple Models"
		else:
			name = models[0].name
		self.title = "Compute Secondary Structure for %s" % name
		ModelessDialog.__init__(self)
	def __init__(self, models):
		self.models = models
		if len(models) > 1:
			name = "Multiple Models"
		else:
			name = models[0].name
		self.title = "Set Transformation of %s" % name
		ModelessDialog.__init__(self)
 def __init__(self, models):
     self.models = models
     if len(models) > 1:
         name = "Multiple Models"
     else:
         name = models[0].name
     self.title = "Compute Secondary Structure for %s" % name
     ModelessDialog.__init__(self)
示例#16
0
	def destroy(self):
		self.mav.triggers.deleteHandler(ADD_ASSOC,
							self.addAssocHandlerID)
		self.mav.triggers.deleteHandler(DEL_ASSOC,
							self.delAssocHandlerID)
		self.mav = None
		chimera.openModels.deleteAddHandler(self.addHandlerID)
		chimera.openModels.deleteRemoveHandler(self.removeHandlerID)
		ModelessDialog.destroy(self)
示例#17
0
 def destroy(self, *args):
     self.mouseLabelingVar.set(True)
     self.mouseModeButton.invoke()
     chimera.triggers.deleteHandler(SAVE_SESSION, self._sessionHandlerID)
     chimera.triggers.deleteHandler(CLOSE_SESSION, self._closeHandlerID)
     chimera.triggers.deleteHandler(BEGIN_RESTORE_SESSION,
                                    self._beginRestoreHandlerID)
     chimera.openModels.close([self.model, self.keyModel])
     ModelessDialog.destroy(self)
示例#18
0
	def destroy(self):
		chimera.triggers.deleteHandler('Residue', self.resHandlerID)
		chimera.triggers.deleteHandler(SAVE_SESSION, self._sesHandlerID)
		chimera.openModels.close(self.rotamers)
		for label, ddn in self.dependentDialogInfo:
			dd = getattr(self, ddn + 'Dialog', None)
			if dd:
				dd.destroy()
		ModelessDialog.destroy(self)
 def destroy(self):
     chimera.triggers.deleteHandler('Residue', self.resHandlerID)
     chimera.triggers.deleteHandler(SAVE_SESSION, self._sesHandlerID)
     chimera.openModels.close(self.rotamers)
     for label, ddn in self.dependentDialogInfo:
         dd = getattr(self, ddn + 'Dialog', None)
         if dd:
             dd.destroy()
     ModelessDialog.destroy(self)
示例#20
0
 def __init__(self, model):
     self.title = 'PDB Headers for %s' % model.name
     self.model = model
     from chimera import preferences
     self.prefs = preferences.addCategory(
         "PDB headers dialog",
         preferences.HiddenCategory,
         optDict={"ordering": "Alphabetical"})
     ModelessDialog.__init__(self)
示例#21
0
	def __init__(self, title="Add Hydrogens", models=None,
						useHBonds=None, cb=None, **kw):
		self.title = title
		self.cb = cb
		self.startModels = models
		if useHBonds is None:
			self.startUseHBonds = prefs[HBOND_GUIDED]
		else:
			self.startUseHBonds = useHBonds
		ModelessDialog.__init__(self, **kw)
示例#22
0
	def __init__(self, cb, unchargedResidues, unchargedAtoms,
						method, status, gaffType, showCharges=False):
		self.cb = cb
		self.unchargedResidues = unchargedResidues
		self.unchargedAtoms = unchargedAtoms
		self.status = status
		self.method = method
		self.gaffType = gaffType
		self.showCharges = showCharges
		ModelessDialog.__init__(self)
示例#23
0
	def __init__(self, modelList, subSelection, *args, **kw):
		from chimera import preferences
		self._removeHandler = None
		for m in modelList:
			m.preclusterColor = m.color
		self.subSelection = subSelection
		self._cluster(modelList)
		ModelessDialog.__init__(self, *args, **kw)
		chimera.extension.manager.registerInstance(self)
		self._removeHandler = chimera.openModels.addRemoveHandler(
						self._modelsChanged, None)
 def __init__(self, movie, startFrame, stride, endFrame, useSel, ignoreBulk,
              ignoreHyds):
     self.movie = movie
     self.movie.subdialogs.append(self)
     self.startFrame = startFrame
     self.stride = stride
     self.endFrame = endFrame
     self.useSel = useSel
     self.ignoreBulk = ignoreBulk
     self.ignoreHyds = ignoreHyds
     ModelessDialog.__init__(self)
示例#25
0
	def __init__(self, movie, startFrame, stride, endFrame, useSel,
						ignoreBulk, ignoreHyds):
		self.movie = movie
		self.movie.subdialogs.append(self)
		self.startFrame = startFrame
		self.stride = stride
		self.endFrame = endFrame
		self.useSel = useSel
		self.ignoreBulk = ignoreBulk
		self.ignoreHyds = ignoreHyds
		ModelessDialog.__init__(self)
示例#26
0
 def __init__(self, groupPanel):
     self.groupPanel = groupPanel
     options = {
         "shownButs": {},
         "executionList": ['attributes...'],
         "shownColumns": {}
     }
     self.prefs = preferences.addCategory("Pseudobond Group Panel",
                                          preferences.HiddenCategory,
                                          optDict=options)
     ModelessDialog.__init__(self)
示例#27
0
 def __init__(self, modelList, subSelection, *args, **kw):
     from chimera import preferences
     self._removeHandler = None
     for m in modelList:
         m.preclusterColor = m.color
     self.subSelection = subSelection
     self._cluster(modelList)
     ModelessDialog.__init__(self, *args, **kw)
     chimera.extension.manager.registerInstance(self)
     self._removeHandler = chimera.openModels.addRemoveHandler(
         self._modelsChanged, None)
示例#28
0
	def __init__(self, groupPanel):
		self.groupPanel = groupPanel
		options = {
			"shownButs": {},
			"executionList": ['attributes...'],
			"shownColumns": {}
		}
		self.prefs = preferences.addCategory("Pseudobond Group Panel",
						preferences.HiddenCategory,
						optDict=options)
		ModelessDialog.__init__(self)
示例#29
0
	def destroy(self, *args):
		self.mouseLabelingVar.set(True)
		self.mouseModeButton.invoke()
		chimera.triggers.deleteHandler(SAVE_SESSION,
							self._sessionHandlerID)
		chimera.triggers.deleteHandler(CLOSE_SESSION,
							self._closeHandlerID)
		chimera.triggers.deleteHandler(BEGIN_RESTORE_SESSION,
						self._beginRestoreHandlerID)
		chimera.openModels.close([self.model, self.keyModel])
		ModelessDialog.destroy(self)
示例#30
0
	def __init__(self, modelPanel):
		self.modelPanel = modelPanel
		options = {
			"freqButs": {},
			"executionList": ['attributes...'],
			"shownColumns": {},
			"showColor": False,
			"lastUse": None
		}
		self.prefs = preferences.addCategory("Model Panel",
						preferences.HiddenCategory,
						optDict=options)
		ModelessDialog.__init__(self)
示例#31
0
 def __init__(self, modelPanel):
     self.modelPanel = modelPanel
     options = {
         "freqButs": {},
         "executionList": ['attributes...'],
         "shownColumns": {},
         "showColor": False,
         "lastUse": None
     }
     self.prefs = preferences.addCategory("Model Panel",
                                          preferences.HiddenCategory,
                                          optDict=options)
     ModelessDialog.__init__(self)
示例#32
0
	def destroy(self):
		self.regionListing.hlist._widgetCache.clear()
		self.seqCanvas.mav.triggers.deleteHandler(DEL_ASSOC,
							self.delAssocHandlerID)
		if hasattr(self,'_selChangeHandler') and self._selChangeHandler:
			chimera.triggers.deleteHandler("selection changed",
							self._selChangeHandler)
		if self._scfDialog:
			self._scfDialog.destroy()
			self._scfDialog = None
		for rd in self.renameDialogs.values():
			rd.destroy()
		self.renameDialogs.clear()
		ModelessDialog.destroy(self)
示例#33
0
	def __init__(self, name, molList, tableData=None):
		self.title = "ModBase: %s" % name
		self.molList = molList
		self.tableData = tableData
		ModelessDialog.__init__(self)
		self.closeHandler = chimera.openModels.addRemoveHandler(
						self._modelClosedCB, None)
		self.selHandler = chimera.triggers.addHandler(
						"selection changed",
						self._selectionChangedCB, None)
		self.sesHandler = chimera.triggers.addHandler(
						SAVE_SESSION,
						self._sessionCB, None)
		chimera.extension.manager.registerInstance(self)
 def __init__(self,
              title="Add Hydrogens",
              models=None,
              useHBonds=None,
              cb=None,
              **kw):
     self.title = title
     self.cb = cb
     self.startModels = models
     if useHBonds is None:
         self.startUseHBonds = prefs[HBOND_GUIDED]
     else:
         self.startUseHBonds = useHBonds
     ModelessDialog.__init__(self, **kw)
示例#35
0
	def __init__(self, process=None, models=None, chargeModel=None,
								cb=None, **kw):
		if process:
			self.title = "Assign Charges for %s" % process.title()
		else:
			from AddCharge import process
		self.process = process
		self.cb = cb
		self.startModels = models
		if not chargeModel:
			from AddCharge import defaultChargeModel
			chargeModel = defaultChargeModel
		self.initialChargeModel = chargeModel
		ModelessDialog.__init__(self, **kw)
示例#36
0
    def __init__(self, parent=None, mode='atoms'):
        # Check
        self.title = 'Select {}'.format(mode)
        self.mode = mode

        # Fire up
        ModelessDialog.__init__(self)
        if not chimera.nogui:  # avoid useless errors during development
            chimera.extension.manager.registerInstance(self)

        # Fix styles
        self._fix_styles(*self.buttonWidgets.values())
        self._toplevel.attributes('-topmost', True)
        self._toplevel.resizable(width=True, height=False)
 def __init__(self, movie, startFrame, stride, endFrame, useSel, minRmsd,
              maxRmsd, ignoreBulk, ignoreHyds, recolor):
     self.movie = movie
     self.movie.subdialogs.append(self)
     self.startFrame = startFrame
     self.stride = stride
     self.endFrame = endFrame
     self.useSel = useSel
     self.minRmsd = minRmsd
     self.maxRmsd = maxRmsd
     self.ignoreBulk = ignoreBulk
     self.ignoreHyds = ignoreHyds
     self.recolor = recolor
     self.title = self.titleFmt % (minRmsd, maxRmsd)
     ModelessDialog.__init__(self)
示例#38
0
	def __init__(self, movie, startFrame, stride, endFrame, useSel, minRmsd,
				maxRmsd, ignoreBulk, ignoreHyds, recolor):
		self.movie = movie
		self.movie.subdialogs.append(self)
		self.startFrame = startFrame
		self.stride = stride
		self.endFrame = endFrame
		self.useSel = useSel
		self.minRmsd = minRmsd
		self.maxRmsd = maxRmsd
		self.ignoreBulk = ignoreBulk
		self.ignoreHyds = ignoreHyds
		self.recolor = recolor
		self.title = self.titleFmt % (minRmsd, maxRmsd)
		ModelessDialog.__init__(self)
示例#39
0
	def __init__(self, name, cavities, sessionData=None):
		self.title = "CASTp: %s" % name
		self.cavities = cavities
		from weakref import proxy
		def wrapper(s=proxy(self)):
			s._cavityChangeCB()
		for cav in cavities:
			cav.pocketInfo["atoms"].selChangedCB = wrapper
			cav.mouthInfo["atoms"].selChangedCB = wrapper
		if sessionData:
			self.tableData = sessionData
		else:
			self.tableData = None
		ModelessDialog.__init__(self)
		chimera.extension.manager.registerInstance(self)
示例#40
0
	def __init__(self, model):
		self.model = model
		self.setInCallback = False
		self.title = "%s attributes (model %s)" % (
				readableName(model), model.oslIdent()[1:])
		self.triggers = [('Model', chimera.triggers.addHandler(
					'Model', self._refreshCB, None))]
		self.refreshFuncs = {}
		self.refreshFuncs['Model'] = []
			
		if isinstance(self.model, chimera.Molecule) \
		and len(self.model.pdbHeaders) > 0:
			self.buttons = self.buttons + ["PDB Headers..."]

		ModelessDialog.__init__(self)
示例#41
0
 def __init__(self, group):
     self.group = group
     self.setInCallback = 0
     if group.category:
         self.title = "%s attributes" % _mapName(group)
     self.triggers = [('PseudoBondGroup',
                       chimera.triggers.addHandler('PseudoBondGroup',
                                                   self._refreshCB, None)),
                      ('PseudoBond',
                       chimera.triggers.addHandler('PseudoBond',
                                                   self._refreshCB, None))]
     self.refreshFuncs = {}
     self.refreshFuncs['PseudoBondGroup'] = []
     self.refreshFuncs['PseudoBond'] = []
     ModelessDialog.__init__(self)
示例#42
0
	def __init__(self, refModels, altModels, subSelection, *args, **kw):
		#
		# Save the subselection (part of model to match)
		# as well as the model lists (ordered by subid)
		#
		self.subSelection = subSelection
		l = [ (m.subid, m) for m in refModels ]
		l.sort()
		self.refModels = [ t[1] for t in l ]
		l = [ (m.subid, m) for m in  altModels ]
		l.sort()
		self.altModels = [ t[1] for t in l ]

		#
		# Grab the atomic coordinates that will be used
		# to compute RMSDs and check for errors
		#
		self.atomDict = {}
		counts = []
		for ml in self.refModels, self.altModels:
			for m in ml:
				osl = '%s%s' % (m.oslIdent(), self.subSelection)
				s = selection.OSLSelection(osl)
				atoms = s.atoms()
				self.atomDict[m] = match._coordArray(atoms)
				counts.append(len(atoms))
		if min(counts) != max(counts):
			raise chimera.UserError("Unequal number of atoms "
						"found in models")
		if counts[0] == 0:
			raise chimera.UserError("No atoms match atom specifier")

		#
		# Add handler to monitor change in display or active
		# status changes
		#
		self.trigger = chimera.triggers.addHandler('check for changes',
							self._statusCheck, None)

		#
		# Initialize dialog
		#
		ModelessDialog.__init__(self, *args, **kw)

		# 
		# Register with extension manager
		#
		chimera.extension.manager.registerInstance(self)
示例#43
0
    def __init__(self, refModels, altModels, subSelection, *args, **kw):
        #
        # Save the subselection (part of model to match)
        # as well as the model lists (ordered by subid)
        #
        self.subSelection = subSelection
        l = [(m.subid, m) for m in refModels]
        l.sort()
        self.refModels = [t[1] for t in l]
        l = [(m.subid, m) for m in altModels]
        l.sort()
        self.altModels = [t[1] for t in l]

        #
        # Grab the atomic coordinates that will be used
        # to compute RMSDs and check for errors
        #
        self.atomDict = {}
        counts = []
        for ml in self.refModels, self.altModels:
            for m in ml:
                osl = '%s%s' % (m.oslIdent(), self.subSelection)
                s = selection.OSLSelection(osl)
                atoms = s.atoms()
                self.atomDict[m] = match._coordArray(atoms)
                counts.append(len(atoms))
        if min(counts) != max(counts):
            raise chimera.UserError("Unequal number of atoms "
                                    "found in models")
        if counts[0] == 0:
            raise chimera.UserError("No atoms match atom specifier")

        #
        # Add handler to monitor change in display or active
        # status changes
        #
        self.trigger = chimera.triggers.addHandler('check for changes',
                                                   self._statusCheck, None)

        #
        # Initialize dialog
        #
        ModelessDialog.__init__(self, *args, **kw)

        #
        # Register with extension manager
        #
        chimera.extension.manager.registerInstance(self)
示例#44
0
 def __init__(self,
              cb,
              unchargedResidues,
              unchargedAtoms,
              method,
              status,
              gaffType,
              showCharges=False):
     self.cb = cb
     self.unchargedResidues = unchargedResidues
     self.unchargedAtoms = unchargedAtoms
     self.status = status
     self.method = method
     self.gaffType = gaffType
     self.showCharges = showCharges
     ModelessDialog.__init__(self)
示例#45
0
	def destroy(self):
		if self.cavities:
			cav1 = self.cavities[0]
			atoms = (cav1.mouthInfo["atoms"].atoms()
				or cav1.pocketInfo["atoms"].atoms())
			if atoms:
				# close surface too...
				from chimera import openModels
				mol = atoms[0].molecule
				openModels.close(openModels.list(
						id=mol.id, subid=mol.subid))
		for chk in [self.doSelect, self.doColor, self.doSurface,
						self.doZoom, self.excludeMouth]:
			chk.destroy()
		chimera.extension.manager.deregisterInstance(self)
		ModelessDialog.destroy(self)
 def __init__(self, viewdock, *args, **kw):
     self.viewdock = viewdock
     self.results = viewdock.results
     self.compounds = Set()
     self.selected = None
     self.valueCache = {}
     self._isMapped = False
     self._colAddHandler = None
     self._colDelHandler = None
     self._colUpdHandler = None
     self._needChangeCompounds = False
     ModelessDialog.__init__(self, *args, **kw)
     self._exitHandler = self.viewdock.triggers.addHandler(
         self.viewdock.EXIT, self._exit, None)
     self._cpdChgHandler = self.viewdock.triggers.addHandler(
         self.viewdock.COMPOUND_STATE_CHANGED, self._compoundStateChanged,
         None)
 def Close(self):
     if self._computing:
         self._abort = True
         return
     self.movie.subdialogs.remove(self)
     while self.dependentDialogs:
         self.dependentDialogs.Close()
     ModelessDialog.Close(self)
示例#48
0
	def __init__(self, group):
		self.group = group
		self.setInCallback = 0
		if group.category:
			self.title = "%s attributes" % _mapName(group)
		self.triggers = [
			('PseudoBondGroup',
				chimera.triggers.addHandler('PseudoBondGroup',
					self._refreshCB, None)),
			('PseudoBond',
				chimera.triggers.addHandler('PseudoBond',
					self._refreshCB, None))
		]
		self.refreshFuncs = {}
		self.refreshFuncs['PseudoBondGroup'] = []
		self.refreshFuncs['PseudoBond'] = []
		ModelessDialog.__init__(self)
示例#49
0
 def __init__(self,
              process=None,
              models=None,
              chargeModel=None,
              cb=None,
              **kw):
     if process:
         self.title = "Assign Charges for %s" % process.title()
     else:
         from AddCharge import process
     self.process = process
     self.cb = cb
     self.startModels = models
     if not chargeModel:
         from AddCharge import defaultChargeModel
         chargeModel = defaultChargeModel
     self.initialChargeModel = chargeModel
     ModelessDialog.__init__(self, **kw)
示例#50
0
    def __init__(self, mol, modes, sesData=None, *args, **kw):
        self.showVectors = False
        self.vectorModel = None
        self.sessionHandler = None
        self.movieDialog = None
        self.modeNumber = False
        self.__recursion = False
        self.counter = 0
        self.cyl = 0
        self.con = 0
        self.rel = 0
        self.vecSf = 0
        self.atoms = list()
        self.modeData = list()
        self.title = None
        self.molecule = None

        print modes
        self.molecule = mol
        self.title = "Normal Modes for %s" % mol.name
        cs1 = mol.newCoordSet(0)
        for atom in mol.atoms:
            atom.setCoord(atom.coord(), cs1)
            self.atoms.append(atom)

        for index, mode in enumerate(modes):
            active = False
            displacements = list()
            v = mode.getEigvec()
            # freq = str((mode.getEigval()/FREQ_CONVERSOR)**0.5)
            freq = str(mode.getEigval())
            for i in xrange(0, len(v), 3):
                x, y, z = v[i:i + 3]
                displacements.append(Vector(x, y, z))
            self.modeData.append(
                _NormalModeProxy(index, active, freq, displacements, self))
        self._createMovieDialog(self.molecule)

        ModelessDialog.__init__(self, *args, **kw)
        self.sessionHandler = chimera.triggers.addHandler(
            SAVE_SESSION, self._sessionSaveCB, None)

        if not chimera.nogui:  # avoid useless errors during development
            chimera.extension.manager.registerInstance(self)
示例#51
0
	def __init__(self, ensemble, **kw):
		self.title = "MD Movie: %s" % ensemble.name
		self.ensemble = ensemble
		self.model = Trajectory.Ensemble(self.ensemble)
		self.model.CreateMolecule()
		endFrame = ensemble.endFrame
		if endFrame == "pipe":
			fn = 1
			while True:
				replyobj.status("Loading trajectory from pipe:"
					" frame %d\n" % fn)
				try:
					self.model.LoadFrame(fn,
							makeCurrent=False)
				except NoFrameError:
					break
				fn += 1
			replyobj.status("Loading trajectory from pipe: done\n")
			endFrame = fn-1
		if ensemble.startFrame == None:
			self.startFrame = 1
		else:
			self.startFrame = ensemble.startFrame
			if self.startFrame > len(ensemble):
				replyobj.warning("Start frame > number of"
					" trajectory frames; changing start"
					" frame to 1\n")
				self.startFrame = 1
		if endFrame == None:
			self.endFrame = len(ensemble)
		else:
			self.endFrame = endFrame
			if self.endFrame > len(ensemble):
				replyobj.warning("End frame > number of"
					" trajectory frames; changing end"
					" frame to last frame\n")
				self.endFrame = len(ensemble)
		self.molTrigID = chimera.triggers.addHandler("Molecule",
							self._molTrigCB, None)
		self.openOpts = kw
		self._inTriggerCB = False
		ModelessDialog.__init__(self)
		del self.openOpts
		chimera.extension.manager.registerInstance(self)
示例#52
0
 def Close(self):
     chimera.viewer.background = None
     self.entry.resaturate()
     for (trigger, key), handler in self.entry._handlers.items():
         chimera.triggers.deleteHandler(trigger, handler)
     global ui
     ui = None
     ModelessDialog.Close(self)
     chimera.extension.manager.deregisterInstance(self)
     self.destroy()
示例#53
0
	def __init__(self, viewdock, *args, **kw):
		self.viewdock = viewdock
		self.results = viewdock.results
		self.compounds = Set()
		self.selected = None
		self.valueCache = {}
		self._isMapped = False
		self._colAddHandler = None
		self._colDelHandler = None
		self._colUpdHandler = None
		self._needChangeCompounds = False
		ModelessDialog.__init__(self, *args, **kw)
		self._exitHandler = self.viewdock.triggers.addHandler(
						self.viewdock.EXIT,
						self._exit, None)
		self._cpdChgHandler = self.viewdock.triggers.addHandler(
						self.viewdock.COMPOUND_STATE_CHANGED,
						self._compoundStateChanged,
						None)
示例#54
0
 def __init__(self, ensemble, **kw):
     self.title = "MD Movie: %s" % ensemble.name
     self.ensemble = ensemble
     self.model = Trajectory.Ensemble(self.ensemble)
     self.model.CreateMolecule()
     endFrame = ensemble.endFrame
     if endFrame == "pipe":
         fn = 1
         while True:
             replyobj.status("Loading trajectory from pipe:"
                             " frame %d\n" % fn)
             try:
                 self.model.LoadFrame(fn, makeCurrent=False)
             except NoFrameError:
                 break
             fn += 1
         replyobj.status("Loading trajectory from pipe: done\n")
         endFrame = fn - 1
     if ensemble.startFrame == None:
         self.startFrame = 1
     else:
         self.startFrame = ensemble.startFrame
         if self.startFrame > len(ensemble):
             replyobj.warning("Start frame > number of"
                              " trajectory frames; changing start"
                              " frame to 1\n")
             self.startFrame = 1
     if endFrame == None:
         self.endFrame = len(ensemble)
     else:
         self.endFrame = endFrame
         if self.endFrame > len(ensemble):
             replyobj.warning("End frame > number of"
                              " trajectory frames; changing end"
                              " frame to last frame\n")
             self.endFrame = len(ensemble)
     self.molTrigID = chimera.triggers.addHandler("Molecule",
                                                  self._molTrigCB, None)
     self.openOpts = kw
     self._inTriggerCB = False
     ModelessDialog.__init__(self)
     del self.openOpts
     chimera.extension.manager.registerInstance(self)
示例#55
0
	def __init__(self):
		import os.path
		myDir, junk = os.path.split(__file__)
		addFunction('place text', (self._pickLabel, self._moveLabel,
			None), icon=chimage.get(Image.open(os.path.join(myDir,
						'ilabel.png')), tkgui.app))
		addFunction('place key', (self._startOrGrabKey,
			self._sizeOrMoveKey, None), icon=chimage.get(
			Image.open(os.path.join(myDir, 'key.png')), tkgui.app))

		import Ilabel
		if not Ilabel._ilabelModel:
			Ilabel.IlabelModel()
		self.model = Ilabel._ilabelModel
		ModelessDialog.__init__(self)
		self._sessionHandlerID = chimera.triggers.addHandler(
					SAVE_SESSION, self._saveSession, None)
		self._closeHandlerID = chimera.triggers.addHandler(
					CLOSE_SESSION, self.destroy, None)
		self._beginRestoreHandlerID = chimera.triggers.addHandler(
				BEGIN_RESTORE_SESSION, self.destroy, None)