示例#1
0
def sessionRestore(sessionData):
	from SimpleSession import idLookup
	version = sessionData[0]
	if version == 1:
		(v, mid, program, name, parserData, serviceData,
							tableData) = sessionData
		mol = idLookup(mid)
		seq = None
		showOne = False
	elif version == 2:
		(v, mid, seq, program, name, parserData, serviceData,
							tableData) = sessionData
		mol = idLookup(mid)
		showOne = False
	elif version == 3:
		(v, mid, ss, seq, program, name, showOne,
				parserData, serviceData, tableData) = sessionData
		if mid is not None:
			mol = idLookup(mid)
		elif ss is not None:
			mol = chimera.Sequence.restoreSequence(ss)
		else:
			mol = None
	else:
		raise ValueError("unknown blastpdb version: %s" % str(version))
	BlastResultsDialog(mol=mol, seq=seq, sessionData=(program, name,
								showOne,
								parserData,
								serviceData,
								tableData))
示例#2
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)
示例#3
0
def sessionRestore(sessionData):
	from SimpleSession import idLookup
	version, resID, resType, rotIDs, bbdep, libName, tableInfo = sessionData
	from Rotamers import libraries
	for lib in libraries:
		if lib.displayName == libName:
			break
	else:
		raise ValueError("Cannot find library")
	sesData = (bbdep, [idLookup(rot) for rot in rotIDs], tableInfo)
	RotamerDialog(idLookup(resID), resType, lib, sessionData=sesData)
def sessionRestore(sessionData):
    from SimpleSession import idLookup
    version, resID, resType, rotIDs, bbdep, libName, tableInfo = sessionData
    from Rotamers import libraries
    for lib in libraries:
        if lib.displayName == libName:
            break
    else:
        raise ValueError("Cannot find library")
    sesData = (bbdep, [idLookup(rot) for rot in rotIDs], tableInfo)
    RotamerDialog(idLookup(resID), resType, lib, sessionData=sesData)
示例#5
0
 def _restoreNMTSession_v1(self, data):
     from SimpleSession import idLookup
     self.molecule = idLookup(data["molecule"])
     self.title = "Normal Modes for %s" % self.molecule.name
     self.atoms = [idLookup(sid) for sid in data["atoms"]]
     self.modeData = list()
     for index, (active, freq, dl) in enumerate(data["modeData"]):
         self.modeData.append(
             _NormalModeProxy(index, active, freq, [Vector(*v) for v in dl],
                              self))
     self._restoreHandler = chimera.triggers.addHandler(
         END_RESTORE_SESSION, self._restoreMovieDialog, None)
示例#6
0
	def _restoreSession(self, targetMap, version=1):
		from SimpleSession import idLookup
		if version == 1:
			for info, atomIDs in targetMap.items():
				rgba, anisoParams = info
				scale, smoothing = anisoParams
				self.showAniso([idLookup(atomID) for atomID in atomIDs],
					color=rgba, scale=scale, smoothing=smoothing)
			return
		if version == 2:
			for info, atomIDs in targetMap.items():
				anisoParams, colors = info
				scale, smoothing, axisFactor = anisoParams
				ellipsoidColor, axisColor, ellipseColor = colors
				if ellipseColor:
					ellipseFactor = 1.0
				else:
					ellipseFactor = None
				self.showAniso([idLookup(atomID) for atomID in atomIDs],
					color=ellipsoidColor, showEllipsoid=ellipsoidColor,
					axisColor=axisColor, axisFactor=axisFactor,
					ellipseColor=ellipseColor, ellipseFactor=ellipseFactor,
					scale=scale, smoothing=smoothing)
			return
		if version == 3:
			for info, atomIDs in targetMap.items():
				anisoParams, colors = info
				scale, smoothing, axisFactor, ellipseFactor = anisoParams
				ellipsoidColor, axisColor, ellipseColor = colors
				self.showAniso([idLookup(atomID) for atomID in atomIDs],
					color=ellipsoidColor, showEllipsoid=ellipsoidColor,
					axisColor=axisColor, axisFactor=axisFactor,
					ellipseColor=ellipseColor, ellipseFactor=ellipseFactor,
					scale=scale, smoothing=smoothing)
			return
		for info, atomIDs in targetMap.items():
			anisoParams, colors = info
			scale, smoothing, axisFactor, ellipseFactor, \
				axisThickness, ellipseThickness = anisoParams
			ellipsoidColor, axisColor, ellipseColor = colors
			self.showAniso([idLookup(atomID) for atomID in atomIDs],
				color=ellipsoidColor, showEllipsoid=ellipsoidColor,
				axisColor=axisColor, axisFactor=axisFactor,
				axisThickness=axisThickness, ellipseColor=ellipseColor,
				ellipseFactor=ellipseFactor, ellipseThickness=ellipseThickness,
				scale=scale, smoothing=smoothing)
示例#7
0
def sessionRestore(sessionData):
	from SimpleSession import idLookup
	version = sessionData[0]
	if version == 1:
		ignore, name, molIdList, infoList, tableData = sessionData
		molList = [ idLookup(mid) for mid in molIdList ]
		for m, info in zip(molList, infoList):
			assignModbaseInfo(m, info)
	else:
		raise ValueError("unknown ModBase version: %s" % str(version))
	ModBaseDialog(name, molList, tableData=tableData)
	def _restoreSession(self, planeData, fromGeom=False):
		from SimpleSession import getColor, idLookup
		maxNumber = 0
		for data, atomIDs in planeData.items():
			number, name, cmpVal, radius, thickness, colorID, origin, normal\
															= data
			atoms = [idLookup(a) for a in atomIDs]
			self._instantiatePlane(number, name, self.planeOrdinal + number,
							getColor(colorID), radius, thickness,
							self._getSourceModel(atoms), atoms,
							chimera.Plane(Point(*origin), Vector(*normal)))
			maxNumber = max(number, maxNumber)
		self.planeOrdinal += maxNumber
 def _restoreSession(self, axisData, fromGeom=False):
     from SimpleSession import getColor, idLookup
     for i, data in enumerate(axisData.keys()):
         atomIDs = axisData[data]
         try:
             number, name, cmpVal, radius, colorID, extents, center,\
                direction = data
         except ValueError:
             number = i + 1
             name, cmpVal, radius, colorID, extents, center,\
                direction = data
         atoms = [idLookup(a) for a in atomIDs]
         self._instantiateAxis(number, name, getColor(colorID), radius,
                               self._getSourceModel(atoms), atoms,
                               Point(*center), Vector(*direction), extents)
示例#10
0
  def create_object(self, id_to_marker):

    m1 = id_to_marker[self.marker_id_1]
    m2 = id_to_marker[self.marker_id_2]
    if self.version >= 2:
      from SimpleSession import idLookup
      bond = idLookup(self.bond_session_id)
    else:
      bond = None
    import markerset
    l = markerset.Link(m1, m2, self.rgba, self.radius, bond = bond)
    l.bond.display = self.displayed
    if self.extra_attributes:
      m.extra_attributes = self.extra_attributes

    return l
示例#11
0
def id_to_model(id):

  model = None
  if isinstance(id, tuple) and len(id) == 3:
    from SimpleSession import modelMap
    mlist = [m for m in modelMap.get(id[:2], []) if m.name == id[2]]
    if len(mlist) == 1:
      model = mlist[0]
    else:
      global id_to_model_failed
      id_to_model_failed.add(id)
  elif not id is None:
    from SimpleSession import idLookup
    model = idLookup(id)

  return model
示例#12
0
    def create_object(self, id_to_marker):

        m1 = id_to_marker[self.marker_id_1]
        m2 = id_to_marker[self.marker_id_2]
        if self.version >= 2:
            from SimpleSession import idLookup
            bond = idLookup(self.bond_session_id)
        else:
            bond = None
        import markerset
        l = markerset.Link(m1, m2, self.rgba, self.radius, bond=bond)
        l.bond.display = self.displayed
        if self.extra_attributes:
            m.extra_attributes = self.extra_attributes

        return l
def restoreSeqInspectors(info):
    global _seqInspectors
    from SimpleSession import idLookup
    for seqName, molID, seqsInfo, mavInfo in info:
        mol = idLookup(molID)
        for seq in mol.sequences():
            if seq.name == seqName:
                break
        else:
            continue
        if seq in _seqInspectors:
            continue

        from MultAlignViewer.MAViewer import restoreMAV
        from chimera.Sequence import restoreSequence
        mav = restoreMAV([restoreSequence(seqInfo) for seqInfo in seqsInfo],
                         mavInfo)
        _addSeqInspector(seq, mav=mav)
示例#14
0
def restoreSeqInspectors(info):
	global _seqInspectors
	from SimpleSession import idLookup
	for seqName, molID, seqsInfo, mavInfo in info:
		mol = idLookup(molID)
		for seq in mol.sequences():
			if seq.name == seqName:
				break
		else:
			continue
		if seq in _seqInspectors:
			continue

		from MultAlignViewer.MAViewer import restoreMAV
		from chimera.Sequence import restoreSequence
		mav = restoreMAV([restoreSequence(seqInfo)
						for seqInfo in seqsInfo], mavInfo)
		_addSeqInspector(seq, mav=mav)
示例#15
0
  def create_object(self, marker_set):

    if self.version >= 2:
      from SimpleSession import idLookup
      atom = idLookup(self.atom_session_id)
    else:
      atom = None
    import markerset
    m = markerset.Marker(marker_set, self.id, self.xyz, self.rgba, self.radius,
                         atom = atom)
    m.atom.display = self.displayed
    m.set_note(self.note)
    m.set_note_rgba(self.note_rgba)
    m.show_note(self.note_shown)
    if self.extra_attributes:
      m.extra_attributes = self.extra_attributes

    return m
示例#16
0
  def create_object(self):

    import markerset
    ms = markerset.Marker_Set(self.name)

    ms.next_marker_id = self.next_marker_id
    ms.file_path = self.file_path

    mm = self.marker_model
    if mm:
      if self.version >= 3:
        from SimpleSession import idLookup
        m = idLookup(self.molecule_session_id)
        ms.set_marker_molecule(m)
        import markerset
        markerset.msc.open_models_cb(None, None, [m])
      else:
        from SimpleSession import modelOffset
        model_id = (mm.id + modelOffset, mm.subid)
        m = ms.marker_model(model_id)
      if self.version >= 2:
        m.color = markerset.chimera_color(self.color)

    id_to_marker = {}
    for m in self.markers:
      marker = m.create_object(ms)
      id_to_marker[marker.id] = marker

    for l in self.links:
      l.create_object(id_to_marker)

    if self.extra_attributes:
      ms.extra_attributes = self.extra_attributes

    if mm and ms.molecule:
      mm.restore_state(ms.molecule)

    cm = self.curve_model
    if cm:
      radius, band_length, subdivisions = self.curve_parameters
      ms.show_curve(radius, band_length, subdivisions)
      cm.restore_state(ms.curve_model)

    return ms
示例#17
0
    def create_object(self):

        import markerset
        ms = markerset.Marker_Set(self.name)

        ms.next_marker_id = self.next_marker_id
        ms.file_path = self.file_path

        mm = self.marker_model
        if mm:
            if self.version >= 3:
                from SimpleSession import idLookup
                m = idLookup(self.molecule_session_id)
                ms.set_marker_molecule(m)
                import markerset
                markerset.msc.open_models_cb(None, None, [m])
            else:
                from SimpleSession import modelOffset
                model_id = (mm.id + modelOffset, mm.subid)
                m = ms.marker_model(model_id)
            if self.version >= 2:
                m.color = markerset.chimera_color(self.color)

        id_to_marker = {}
        for m in self.markers:
            marker = m.create_object(ms)
            id_to_marker[marker.id] = marker

        for l in self.links:
            l.create_object(id_to_marker)

        if self.extra_attributes:
            ms.extra_attributes = self.extra_attributes

        if mm and ms.molecule:
            mm.restore_state(ms.molecule)

        cm = self.curve_model
        if cm:
            radius, band_length, subdivisions = self.curve_parameters
            ms.show_curve(radius, band_length, subdivisions)
            cm.restore_state(ms.curve_model)

        return ms
示例#18
0
    def create_object(self, marker_set):

        if self.version >= 2:
            from SimpleSession import idLookup
            atom = idLookup(self.atom_session_id)
        else:
            atom = None
        import markerset
        m = markerset.Marker(marker_set,
                             self.id,
                             self.xyz,
                             self.rgba,
                             self.radius,
                             atom=atom)
        m.atom.display = self.displayed
        m.set_note(self.note)
        m.set_note_rgba(self.note_rgba)
        m.show_note(self.note_shown)
        if self.extra_attributes:
            m.extra_attributes = self.extra_attributes

        return m
示例#19
0
def restoreTorsions(info):
	from SimpleSession import idLookup
	from BondRotMgr import bondRotMgr
	for bondID, atom1ID, atom2ID in info:
		br = bondRotMgr.rotationForBond(idLookup(bondID))
		br.anchorSide = idLookup(atom1ID)
示例#20
0
def restoreAngles(angleInfo):
	from SimpleSession import idLookup
	for atomIDs in angleInfo:
		addAngle([idLookup(aID) for aID in atomIDs])