Example #1
0
def setRRCByName(r, name):
    rrc = findRRC(name)
    if rrc:
        rrc.setResidue(r)
    else:
        from chimera import replyobj
        replyobj.error("cannot find ribbon residue class named %s" % name)
Example #2
0
	def apply(self, vFunc = None, eFunc = None):
		sel = selection.ItemizedSelection()
		sels = []  # used as a stack when selections get composited
		funcGlobals = {
			"__doc__": None,
			"__name__": "CodeItemizedSelection",
			"__builtins__": __builtins__
		}
		if self.models is None:
			sm = chimera.openModels.list()
		else:
			sm = self.models
		funcLocals = {
			"models": sm,
			"molecules": filter(lambda m, M=Molecule:
							isinstance(m, M), sm),
			"sel": sel,
			"sels": sels,
			"selection": selection
		}

		try:
			exec self.codeObj in funcGlobals, funcLocals
		except:
			from chimera import replyobj
			replyobj.error(" CodeItemizedSelection failed\n")
			s = apply(traceback.format_exception,
					sys.exc_info())
			replyobj.message(string.join(s, ''))
		sel.apply(vFunc, eFunc)
Example #3
0
def prompt_message(DBG, TXT_TMP, SB, EB):
    DBG = DBG + SB + TXT_TMP + EB

    from chimera import replyobj
    replyobj.error(TXT_TMP)

    return DBG
Example #4
0
def focus():
    disped = [x for x in selAtoms() + selBonds() if x.shown()]
    ribbons = [
        x for x in selResidues()
        if x.ribbonDisplay and x.hasRibbon() and x.molecule.display
    ]
    disped.extend(ribbons)
    disped.extend([
        p for p in selectedSurfacePieces()
        if p.display and p.model.display and p.triangleCount > 0
    ])
    if not disped:
        from chimera import replyobj
        replyobj.error(
            "No target atoms/bonds/ribbons/surfaces currently shown\n")
        return
    sel = selection.ItemizedSelection()
    sel.add(disped)
    sel.addImplied(edges=False)
    from Midas import window, cofr
    window(sel)
    from chimera import openModels as om
    if selection.currentEmpty():
        from chimera import viewing, viewer
        om.cofrMethod = viewing.defaultCofrMethod
        viewer.clipping = False
    else:
        om.cofrMethod = om.CenterOfView
Example #5
0
	def Apply(self):
		if not self.getPaths():
			from chimera import replyobj
			replyobj.error("No phylogeny file specified.\n")
			self.enter()
			return
		self.mav.usePhylogenyFile(self.getPaths()[0])
	def Apply(self):
		if not self.getPaths():
			replyobj.error("No EPS save file specified.\n")
			self.enter()
			return
		self.mav.saveAssocInfo(self.getPaths()[0],
					namingStyle=self.namingStyle.get())
Example #7
0
 def Apply(self):
     if not self.getPaths():
         from chimera import replyobj
         replyobj.error("No phylogeny file specified.\n")
         self.enter()
         return
     self.mav.usePhylogenyFile(self.getPaths()[0])
Example #8
0
 def Apply(self):
     if not self.getPaths():
         replyobj.error("No file specified.\n")
         self.enter()
         return
     for path in self.getPaths():
         self.mav.readHeaderFile(path)
Example #9
0
    def open_output_data_items(self, outdir, outfiles):
        """open_output_data_items(outdir, outfiles) - output menu.

        Input:
            outdir      output file directory
            outfiles    output file
            
        Add output data items in outfiles in outdir directory, to
        output data menu.
        """

        if len(outfiles) == 0:
            return
        
        filepaths = map(lambda outfile: os.path.join(outdir, outfile),
                        outfiles)
        filepaths_valid = filter(lambda p: os.path.isfile(p), filepaths)
        self.output_panel.data_open_cb(filepaths_valid)

        if len(filepaths_valid) < len(outfiles):
            msg = 'Some or all output files not found!\n'
            self.status(msg, color='red', blankAfter=10)
            replyobj.error(msg)

        return
Example #10
0
	def statusCB(self):
		self.task.updateStatus(self.opal.currentStatus())
		if not self.opal.isFinished():
			self.opal.queryStatus()
			return
		self.task = None
		fileMap = self.opal.getOutputs()
		if self.opal.isFinished() > 0:
			# Successful completion
			self.finishCB(self.getURLContent(
						fileMap[self.outputFile]))
		else:
			# Failed
			from chimera import replyobj
			replyobj.error("blastpdb %s failed; "
					"see Reply Log for more information"
					% self.queryName)
			try:
				self.showURLContent("blastpdb stdout",
							fileMap["stdout"])
			except KeyError:
				pass
			try:
				self.showURLContent("blastpdb stderr",
							fileMap["stderr"])
			except KeyError:
				pass
 def _makeXSection(self):
     try:
         checkXSection(self.closed, self.points)
     except ValueError, s:
         from chimera import replyobj
         replyobj.error(s)
         return False
	def Apply(self):
		if not self.getPaths():
			replyobj.error("No file specified.\n")
			self.enter()
			return
		for path in self.getPaths():
			self.mav.readHeaderFile(path)
	def browse(self):
		if self.menuOption.var.get() == self.menuoptions[0]:
			modellist = chimera.openModels.list(
					modelTypes=[chimera.Molecule])
			# if no molecules (and i mean MOLECULES)
			# are open in chimera...
			if not modellist:
				replyobj.error('There are no molecules open')
				return
			if len(modellist) > 1:
				modellist = chooseModels(self.parent,
						modelTypes=[chimera.Molecule])
			if modellist:
				#print 'writing pdb to file...'
				# make a pdb file for the model
				self._removeTempFile()
				self.var.set(self._writeTempFile(modellist))
				self.displayVar.set(modellist[0].name)
				#print 'set file name.'
		else:
			if hasattr(self, '_openDialog'):
				self._openDialog.enter()
				return
			from OpenSave import OpenModeless
			self._openDialog = OpenModeless(command=self._openCB,
				title='Select %s' % self.name, multiple=0,
				historyID="Delphi PDB", compressed=False) 
	def Apply(self):
		if not self.getPaths():
			replyobj.error("No header save file specified.\n")
			self.enter()
			return
		self.mav.saveHeader(self.getPaths()[0], self.headerChoice.get(),
					omitNoValue=self.omitNoValueVar.get())
    def apply(self, vFunc=None, eFunc=None):
        sel = selection.ItemizedSelection()
        sels = []  # used as a stack when selections get composited
        funcGlobals = {
            "__doc__": None,
            "__name__": "CodeItemizedSelection",
            "__builtins__": __builtins__
        }
        if self.models is None:
            sm = chimera.openModels.list()
        else:
            sm = self.models
        funcLocals = {
            "models": sm,
            "molecules": filter(lambda m, M=Molecule: isinstance(m, M), sm),
            "sel": sel,
            "sels": sels,
            "selection": selection
        }

        try:
            exec self.codeObj in funcGlobals, funcLocals
        except:
            from chimera import replyobj
            replyobj.error(" CodeItemizedSelection failed\n")
            s = apply(traceback.format_exception, sys.exc_info())
            replyobj.message(string.join(s, ''))
        sel.apply(vFunc, eFunc)
Example #16
0
	def _createRotation(self):
		selBonds = selection.currentBonds()
		if len(selBonds) == 1:
			addRotation(selBonds[0])
			return
		replyobj.error("Exactly one bond must be selected "
							"in graphics window\n")
Example #17
0
	def fileName(self):
		paths = self.getPaths()
		if not paths:
			from chimera import replyobj
			replyobj.error("No file selected\n")
			return
		return paths[0]
Example #18
0
def setXSectionByName(r, name):
	xs = findXSection(name)
	if xs:
		xs.setResidue(r)
	else:
		from chimera import replyobj
		replyobj.error("cannot find ribbon XS named %s" % name)
Example #19
0
	def _makeXSection(self):
		try:
			checkXSection(self.closed, self.points)
		except ValueError, s:
			from chimera import replyobj
			replyobj.error(s)
			return False
Example #20
0
def cmdAddNonstdCharge(residues, netCharge, method="am1", gaffType=True):
    from Midas.midas_text import MidasError
    if not residues:
        raise MidasError("No such residues")
    resName, numAtoms = residues[0].type, len(residues[0].atoms)
    for r in residues[1:]:
        if r.type != resName:
            raise MidasError("Residues not all the same type"
                             " (%s != %s)" % (resName, r.type))
        if numAtoms != len(r.atoms):
            raise MidasError("Residues have differing number of"
                             " atoms (%d != %d)" % (numAtom, len(r.atoms)))
    if not chimera.nogui:
        from AddH.gui import checkNoHyds
        checkNoHyds(
            residues,
            lambda residues=residues, nc=netCharge, method=method, gt=gaffType,
            status=replyobj.status: addNonstandardResCharges(
                residues, nc, method=method, gaffType=gt, status=status),
            process)
        return
    try:
        addNonstandardResCharges(residues,
                                 netCharge,
                                 method=method,
                                 gaffType=gaffType,
                                 status=replyobj.status)
    except ChargeError, v:
        replyobj.error(str(v))
Example #21
0
	def _removeAngle(self, remove=None):
		if len(self.angleInfo) == 0:
			replyobj.error("No angles to remove\n")
			return
		if remove is None:
			if len(self.angleInfo) == 1:
				remove = self.angleInfo
			else:
				remove = self.angleTable.selected()
				if not remove:
					replyobj.error("Must select angle(s) in table\n")
					return
		for rm in remove:
			self.angleInfo.remove(rm)
		self.angleTable.setData(self.angleInfo)

		if len(self.angleInfo) == 0:
			self.angleButtons.button("Remove").config(
							state='disabled')
			from SimpleSession import SAVE_SESSION
			chimera.triggers.deleteHandler(SAVE_SESSION, self._angleSesTrigID)

		if self._osHandler:
			stillNeedHandler = False
			for info in self.angleInfo:
				models = dict.fromkeys([a.molecule
							for a in info[0]])
				if len(models) > 1:
					stillNeedHandler = True
					break
			if not stillNeedHandler:
				chimera.triggers.deleteHandler('OpenState',
								self._osHandler)
				self._osHandler = None
Example #22
0
 def fileName(self):
     paths = self.getPaths()
     if not paths:
         from chimera import replyobj
         replyobj.error("No file selected\n")
         return
     return paths[0]
def setXSectionByName(r, name):
    xs = findXSection(name)
    if xs:
        xs.setResidue(r)
    else:
        from chimera import replyobj
        replyobj.error("cannot find ribbon XS named %s" % name)
Example #24
0
	def _errorRateCB(self):
		if not self.errorRateEntry.valid():
			replyobj.error(
				"Bad auto-association error rate value.\n")
			return
		self.mav.prefs[ASSOC_ERROR_RATE] = int(
						self.errorRateEntry.get())
Example #25
0
    def _sessionRestore(self, info):
        from SimpleSession import idLookup
        for bondID, anchorID, delta, rotID in info:
            bond = idLookup(bondID)
            dup = False
            for br in self.rotations.values():
                if br.bond == bond:
                    from chimera import replyobj
                    replyobj.error("Active torsion in session file same as"
                                   " existing active torsion; skipping")
                    dup = True
                    break
            if dup:
                continue

            anchorSide = idLookup(anchorID)
            if delta:
                # need to make rotation have same delta as original
                bondRot = BondRot(bond)
                bondRot.angle = (-delta, anchorSide)
                bondRot.destroy()

            if rotID in self.rotations:
                rotID = None
            br = self.rotationForBond(bond, requestedID=rotID)
            br.anchorSide = anchorSide

            if delta:
                br.set(delta)
Example #26
0
    def get_morph_models(self):
        """get_morph_models() - get init and final morph models

        Output:
            model0  morph model initial (None if invalid)
            model1  morph model final (None if invalid)
            
        Return the inital and final morph models,
        after checking.
        """

        morph0 = self.morph_init_menu.getvalue()
        morph1 = self.morph_final_menu.getvalue()

        morph0 = self.check_morph_model(morph0)
        morph1 = self.check_morph_model(morph1)

        if morph0 == None or morph1 == None:
            return None, None
        
        morph0_path = morph0.openedAs[0]
        morph1_path = morph1.openedAs[0]
        if morph0_path == morph1_path:
            msg = 'Select 2 different PDB models!\n'
            self.status(msg, color='red', blankAfter=10)
            replyobj.error(msg)
            return None, None

        return morph0, morph1
Example #27
0
 def Apply(self):
     if not self.getPaths():
         replyobj.error("No EPS save file specified.\n")
         self.enter()
         return
     self.mav.saveAssocInfo(self.getPaths()[0],
                            namingStyle=self.namingStyle.get())
Example #28
0
    def _read_mask_parameters(self, param_id, param_type):

        if param_id not in range(18):
            return None

        param_tag_set = ['p0 ','p1 ','p2 ',
                         'size - x  ','size - y  ','size - z  ',
                         'origin - x  ','origin - y  ','origin - z  ',
                         'app - x  ','app - y  ','app - z  ',
                         'tx ','ty ','tz ',
                         'az ','alt','phi']
        param_tag = param_tag_set[param_id]
        mask_param = self.mask_parameters[param_id]
        
        try:
            if   param_type == 'float_type':
                param = float(mask_param.variable.get())
            elif param_type == 'int_type':
                param = int(mask_param.variable.get())
        except:
            msg = 'Check parameter %s value!\n' % param_tag
            self.status(msg, color='red', blankAfter=10)
            replyobj.error(msg)
            return None

        return param
Example #29
0
    def __newWrap(self):
        mav, prefPrefix = self.__dialog.mav, self.__prefPrefix
        if self.__wrapVar.get() == 0:
            mav.prefs[prefPrefix + WRAP_IF] = 0
            mav.prefs[prefPrefix + WRAP] = 1
        elif self.__wrapVar.get() == 1:
            mav.prefs[prefPrefix + WRAP_IF] = 0
            mav.prefs[prefPrefix + WRAP] = 0
        else:
            mav.prefs[prefPrefix + WRAP_IF] = 1

        valid = 0
        if self.__lineWidthEntry.valid():
            lineWidth = 10 * int(self.__lineWidthEntry.get())
            if lineWidth > 0:
                valid = 1
                mav.prefs[prefPrefix + LINE_WIDTH] = lineWidth
        if not valid:
            replyobj.error("Line width must be positive integer\n")

        if not prefPrefix:
            valid = 0
            if self.__wrapThresholdEntry.valid():
                threshold = int(self.__wrapThresholdEntry.get())
                if threshold > 0:
                    valid = 1
                    mav.prefs[prefPrefix + WRAP_THRESHOLD] = threshold
            if not valid:
                replyobj.error("'Number of sequences for line wrapping'"
                               " must be positive integer\n")
        if (len(mav.seqs) == 1) == bool(prefPrefix):
            self.__callback()
Example #30
0
 def browse(self):
     if self.menuOption.var.get() == self.menuoptions[0]:
         modellist = chimera.openModels.list(modelTypes=[chimera.Molecule])
         # if no molecules (and i mean MOLECULES)
         # are open in chimera...
         if not modellist:
             replyobj.error('There are no molecules open')
             return
         if len(modellist) > 1:
             modellist = chooseModels(self.parent,
                                      modelTypes=[chimera.Molecule])
         if modellist:
             #print 'writing pdb to file...'
             # make a pdb file for the model
             self._removeTempFile()
             self.var.set(self._writeTempFile(modellist))
             self.displayVar.set(modellist[0].name)
             #print 'set file name.'
     else:
         if hasattr(self, '_openDialog'):
             self._openDialog.enter()
             return
         from OpenSave import OpenModeless
         self._openDialog = OpenModeless(command=self._openCB,
                                         title='Select %s' % self.name,
                                         multiple=0,
                                         historyID="Delphi PDB",
                                         compressed=False)
Example #31
0
	def _getMatchResidues(self, match, mol):
		# Since the match sequence may be a subset of the
		# entire PDB structure, we cannot do the same thing
		# as for the reference model where we created the
		# match sequence from the structure.  Instead, we
		# find the best match of match sequence to
		# structure sequence using Needleman&Wunsch, and
		# then pull the residues corresponding to the
		# match sequence.
		matchSeq = [ s for s in match.sequence if s != '-' ]
		parts = match.pdb.split('_')
		try:
			chain = parts[1]
		except IndexError:
			chain = ' '
		seq = None
		for s in mol.sequences():
			if s.chain == chain or chain is None:
				seq = s
				break
		else:
			replyobj.error("%s: chain '%s' not found\n"
					% (match.pdb, chain))
			return None
		self.loaded[match] = mol
		return self._getResidues(matchSeq, seq.sequence, seq.residues)
Example #32
0
	def __newWrap(self):
		mav, prefPrefix = self.__dialog.mav, self.__prefPrefix
		if self.__wrapVar.get() == 0:
			mav.prefs[prefPrefix + WRAP_IF] = 0
			mav.prefs[prefPrefix + WRAP] = 1
		elif self.__wrapVar.get() == 1:
			mav.prefs[prefPrefix + WRAP_IF] = 0
			mav.prefs[prefPrefix + WRAP] = 0
		else:
			mav.prefs[prefPrefix + WRAP_IF] = 1

		valid = 0
		if self.__lineWidthEntry.valid():
			lineWidth = 10 * int(self.__lineWidthEntry.get())
			if lineWidth > 0:
				valid = 1
				mav.prefs[prefPrefix + LINE_WIDTH] = lineWidth
		if not valid:
			replyobj.error("Line width must be positive integer\n")

		if not prefPrefix:
			valid = 0
			if self.__wrapThresholdEntry.valid():
				threshold = int(self.__wrapThresholdEntry.get())
				if threshold > 0:
					valid = 1
					mav.prefs[prefPrefix + WRAP_THRESHOLD] = threshold
			if not valid:
				replyobj.error("'Number of sequences for line wrapping'"
					" must be positive integer\n")
		if (len(mav.seqs) == 1) == bool(prefPrefix):
			self.__callback()
Example #33
0
  def Apply(self):

    paths_and_types = file_descriptions_to_types(self.getPathsAndTypes())
    grids, error_message = open_grid_files(paths_and_types)
    if error_message:
      from chimera import replyobj
      replyobj.error(error_message)
    self.grid_objects_cb(grids)
Example #34
0
	def Apply(self):
		if not self.getPaths():
			from chimera import replyobj
			replyobj.error("No coloring file specified.\n")
			self.enter()
			return
		self.mav.useColoringFile(self.getPaths()[0],
					makeDefault=self.defaultVar.get())
 def validate(self):
     for field in self.fields:
         field.invoke()
         if not field.valid():
             replyobj.error("Invalid value for %s\n" %
                            field.cget("label_text"))
             return False
     return True
Example #36
0
def setRRCByName(r, name):
	rrc = findRRC(name)
	if rrc:
		rrc.setResidue(r)
	else:
		from chimera import replyobj
		replyobj.error("cannot find ribbon residue class named %s"
				% name)
	def validate(self):
		for field in self.fields:
			field.invoke()
			if not field.valid():
				replyobj.error("Invalid value for %s\n" %
					field.cget("label_text"))
				return False
		return True
Example #38
0
    def Apply(self):

        paths_and_types = file_descriptions_to_types(self.getPathsAndTypes())
        grids, error_message = open_grid_files(paths_and_types)
        if error_message:
            from chimera import replyobj
            replyobj.error(error_message)
        self.grid_objects_cb(grids)
Example #39
0
    def morph_apply(self):
        """morph_apply() - applies appropriate morphing

        Applies appropriate morphing after Apply button
        is specified. Checks values and passes a message if
        incorrect parameters.
        """
        
        # check input data exists
        if self.data_item == None:
            name = '%s' % (self.data_panel.data_menu.variable.get())
            msg = 'Input data %s not found!\n' % name 
            self.status(msg, color='red', blankAfter=15)
            replyobj.error(msg)
            return

        # get input file path, name, and size in pixels
        infile_path = str(self.data_item.path)
        infile      = str(self.data_item.name)
        infile_size = self.data_item.size

        # get morph models
        morph0, morph1 = self.get_morph_models()
        if (morph0 == None or morph1 == None):
            return
        
        # get morph parameters
        morph_type = self.morph_type.variable.get()
        if morph_type == self.morph_choices[0]:
            frac, thr, filt = self.get_simple_morph_param()

        # check and set output name
        self.output_item = None
        outfile = str(self.data_output.variable.get())
        if (outfile == '') or (outfile == infile):
            first_part, last_part = self.name_and_dot_suffix(infile)
            outfile = '%s-m%s' % (first_part, last_part)
            msg = 'Using default output file %s\n'% outfile
            replyobj.info(msg)
        self.data_output.variable.set(outfile)

        # output
        out_dir = os.getcwd()
        out_files = [outfile]

        # run morph command
        seg_sucess = 0
        
        if morph_type == self.morph_choices[0]:
            seg_success = self.morph_apply_simple(self.data_item,
                            morph0, morph1, outfile, frac, thr, filt)

        # open output
        if seg_success:
            self.open_output_data_items(out_dir, out_files)
            self.enter()

        return
Example #40
0
	def _changeSlab(self, event = None):

		self.model.useClipThickness = self.slabVar.get()
		try:
			thick = float(self.slabThicknessVar.get())
		except ValueError:
			replyobj.error("Invalid slab thickness.\n")
			return
		self.model.clipThickness = thick
Example #41
0
    def _changeSlab(self, event=None):

        self.model.useClipThickness = self.slabVar.get()
        try:
            thick = float(self.slabThicknessVar.get())
        except ValueError:
            replyobj.error("Invalid slab thickness.\n")
            return
        self.model.clipThickness = thick
Example #42
0
	def _createDistance(self):
		"""'Create distance' callback"""

		selAtoms = selection.currentAtoms()
		if len(selAtoms) != 2:
			replyobj.error("Exactly two atoms must be selected "
							"in graphics window\n")
			return
		addDistance(*tuple(selAtoms))
 def Apply(self):
     if not self.getPaths():
         replyobj.error("No EPS save file specified.\n")
         self.enter()
         return
     self.mav.saveEPS(self.getPaths()[0],
                      colorMode=self.colorMode.get(),
                      rotate=self.orientation.get(),
                      extent=self.extent.get(),
                      hideNodes=self.hideNodes.get())
Example #44
0
def setScalingByName(r, name):
	try:
		sc = userScaling[name]
	except KeyError:
		try:
			sc = systemScaling[name]
		except KeyError:
			from chimera import replyobj
			replyobj.error("no ribbon scaling named \"%s\"" % name)
			return
	sc.setResidue(r)
	def _handleRequest(self, function_cb, check):
		if check:
			# make sure all options are properly filled out
			for pagetitle, optionsgroup in self.options:
				for grouptitle, optionslist in optionsgroup:
					for option in optionslist:
						error = option.checkError()
						if error:
							replyobj.error(error)
							return
		function_cb(self.options)
Example #46
0
def setScalingByName(r, name):
    try:
        sc = userScaling[name]
    except KeyError:
        try:
            sc = systemScaling[name]
        except KeyError:
            from chimera import replyobj
            replyobj.error("no ribbon scaling named \"%s\"" % name)
            return
    sc.setResidue(r)
Example #47
0
 def _sessionRestore(self, data):
     if not data:
         return
     version = data.get("version")
     try:
         f = self._restoreVersionMap[version]
     except KeyError:
         replyobj.error("Version %d of NormalModesTable not supported "
                        "in this version of Chimera.\n" % version)
     else:
         f(self, data)
 def _handleRequest(self, function_cb, check):
     if check:
         # make sure all options are properly filled out
         for pagetitle, optionsgroup in self.options:
             for grouptitle, optionslist in optionsgroup:
                 for option in optionslist:
                     error = option.checkError()
                     if error:
                         replyobj.error(error)
                         return
     function_cb(self.options)
Example #49
0
	def Apply(self):
		path = self.getPaths()[0]
		surf = self.surfList.getvalue()
		if not surf:
			replyobj.error("No surface chosen to save.\n")
			return
		from WriteDMS import writeDMS
		replyobj.status("Writing DMS surface to %s\n" % path)
		writeDMS(surf, path, writeNormals=self.saveNormalsVar.get(),
			displayedOnly=self.displayedOnlyVar.get())
		replyobj.status("Wrote DMS surface to %s\n" % path)
Example #50
0
	def _finish(self, results):
		if self.blastTable is None:
			# We already quit, so UI is gone
			return
		from Parser import Parser
		import os.path
		try:
			self.parser = Parser(self.basename, results,
						self.program == "psiblast")
		except SyntaxError, s:
			replyobj.error("BLAST error: %s\n" % s)
			return
Example #51
0
	def _removeDistance(self):
		if len(self.distances) == 1:
			removeDistance(self.distances[0])
			return
		if len(self.distances) == 0:
			replyobj.error("No distances to remove\n")
			return
		if not self.distTable.selected():
			replyobj.error("Must select distance in table\n")
			return
		for d in self.distTable.selected():
			removeDistance(d)
Example #52
0
    def checkEntries(self, user=None, email=None, **kw):
	##check if name is in valid format
	if user == '' or not ',' in user:
	    replyobj.error("Please re-enter Name in the form 'Last, First'.\n")
	    return False

	##check that they've entered a valid email address
	if email == '' or not ('@' in email):
	    replyobj.error("Please enter a valid email address.\n")
	    return False

	return True
 def saveui_save(self, name):
     if name in Reserved:
         from chimera import replyobj
         replyobj.error("%s is a reserved name.  "
                        "Please choose a different name." % name)
         return False
     try:
         checkXSection(self.closed, self.points)
     except ValueError, s:
         from chimera import replyobj
         replyobj.error(s)
         return False
Example #54
0
	def Apply(self):
		if not self.getPaths():
			replyobj.error("No pseudobond file chosen\n")
		lineWidth = self.lineWidth.get()
		prefs["line width"] = lineWidth
		for path in self.getPaths():
			readPBinfo(path, category=self.catName.get(),
				clearCategory=self.clearCat.get(),
				lineWidth=lineWidth, drawMode=None,
				leftModel=str(self.leftModel.get()),
				rightModel=str(self.rightModel.get()),
				defColor=None)
 def Apply(self):
     molList = chimera.openModels.list(modelTypes=[chimera.Molecule])
     selList = self.molecules.curselection()
     if len(selList) != 1:
         return
     molName, molId, molSubid = self.molList[int(selList[0])]
     for m in molList:
         if m.id == molId and m.subid == molSubid:
             mol = m
             break
     else:
         replyobj.error('No selected molecule')
         return
     base.initialize()
     wrl = vrml.Transform()
     helices = base.displayHelices(mol, self.helixColor,
                                   self.helixFixedRadius.get(),
                                   self.helixRadius.get(),
                                   self.helixSplit.get(),
                                   self.helixSplitRatio.get())
     for node in helices:
         wrl.addChild(node)
     strands = base.displayStrands(mol, self.strandColor,
                                   self.strandFixedWidth.get(),
                                   self.strandWidth.get(),
                                   self.strandFixedThickness.get(),
                                   self.strandThickness.get(),
                                   self.strandSplit.get(),
                                   self.strandSplitRatio.get())
     for node in strands:
         wrl.addChild(node)
     if self.displayTurns.get():
         turns = base.displayTurns(mol, self.turnColor,
                                   self.turnWidth.get(),
                                   self.turnThickness.get())
         for node in turns:
             wrl.addChild(node)
     base.deinitialize()
     if not helices and not strands and not turns:
         replyobj.error('No helices, sheets, nor turns found')
         return
     try:
         chimera.openModels.close(self.openModels[mol])
     except KeyError:
         pass
     mList = chimera.openModels.open(vrml.vrml(wrl),
                                     type='VRML',
                                     sameAs=mol,
                                     identifyAs='%s - Pipes and Planks' %
                                     mol.name)
     self.openModels[mol] = mList[0]
     self.openModels[mList[0]] = None
def report_memory_error(size, value_type):

    from numpy import dtype, product, float
    vtype = dtype(value_type)
    tsize = vtype.itemsize
    bytes = product(size, dtype=float) * float(tsize)
    mbytes = bytes / 2**20
    sz = ','.join(['%d' % s for s in size])
    e = ('Could not allocate %.0f Mbyte array of size %s and type %s.\n' %
         (mbytes, sz, vtype.name))
    from chimera import replyobj, CancelOperation
    replyobj.error(e)
    raise CancelOperation, e
	def Apply(self):
		from ModelPanel import ModelPanel
		from chimera import dialogs
		mp = dialogs.find(ModelPanel.name, create=1)
		sels = mp.selected()
		if len(sels) != 1:
			replyobj.error("Must choose exactly one model"
				" in model panel.\n")
			return
		refXform = sels[0].openState.xform

		for model in self.models:
			model.openState.xform = refXform
	def Apply(self):
		mols = self.molListBox.getvalue()
		if not mols:
			self.enter()
			replyobj.error("No models chosen in dialog\n")
			return
		for path in self.getPaths():
			setAttrs = addAttributes(path, models=mols,
					log=self.doLog.get(),
					raiseAttrDialog=self.openDialog.get())
			if setAttrs == []:
				replyobj.error("No attributes were set from"
					" file %s\n" % path)
Example #59
0
	def saveui_save(self, name):
		if name in Reserved:
			from chimera import replyobj
			replyobj.error("%s is a reserved name.  "
					"Please choose a different name."
					% name)
			return False
		try:
			checkXSection(self.closed, self.points)
		except ValueError, s:
			from chimera import replyobj
			replyobj.error(s)
			return False