本文整理汇总了Python中MolKit.molecule.AtomSet.findType方法的典型用法代码示例。如果您正苦于以下问题:Python AtomSet.findType方法的具体用法?Python AtomSet.findType怎么用?Python AtomSet.findType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MolKit.molecule.AtomSet
的用法示例。
在下文中一共展示了AtomSet.findType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: doit
# 需要导入模块: from MolKit.molecule import AtomSet [as 别名]
# 或者: from MolKit.molecule.AtomSet import findType [as 别名]
def doit(self, ats):
""" Function to delete all the references to each atom of a
AtomSet."""
# Remove the atoms of the molecule you are deleting from the
# the AtomSet self.vf.allAtoms
self.vf.allAtoms = self.vf.allAtoms - ats
# If the current selection
atmsInSel = self.vf.selection.findType(Atom)[:]
atmsInSel.sort()
ats.sort()
# Call the updateGeoms function for all the command having an
# updateGeom function
molecules, atomSets = self.vf.getNodesByMolecule(ats)
done = 0
event = DeleteAtomsEvent(objects=ats)
self.vf.dispatchEvent(event)
allAtoms = AtomSet([])
for mol, atSet in map(None, molecules, atomSets):
if len(atSet)==len(mol.allAtoms):
#have to add atoms back to allAtoms for deleteMol to work
self.vf.allAtoms = self.vf.allAtoms + atSet
self.vf.deleteMol.deleteMol(mol)
#if this is the last atom, quit the loop
if mol==molecules[-1]:
done=1
break
continue
mol.allAtoms = mol.allAtoms - atSet
allAtoms = allAtoms + atSet
#FIRST remove any possible hbonds
hbondAts = atSet.get(lambda x: hasattr(x, 'hbonds'))
if hbondAts is not None:
#for each atom with hbonds
for at in hbondAts:
if not hasattr(at, 'hbonds'):
continue
#remove each of its hbonds
for b in at.hbonds:
self.removeHBond(b)
for at in atSet:
for b in at.bonds:
at2 = b.atom1
if at2 == at: at2 = b.atom2
at2.bonds.remove(b)
at.parent.remove(at, cleanup=1)
if len(atmsInSel):
if atmsInSel == ats:
# the current selection was deleted
self.vf.clearSelection(topCommand=0)
else:
nodes = self.vf.selection
lenSel = len(nodes)
setClass = nodes.__class__
elementClass = nodes.elementType
if lenSel>0:
# this breaks if selectionlevel is Molecule, for instance
# setClass = nodes.__class__
# newSel = setClass(nodes.findType(Atom) - ats)
# newSel2 = setClass([])
newSel = atmsInSel-ats
newSel2 = AtomSet([])
# may have ats which have been deleted everywhere else
for at in newSel:
if at in at.top.allAtoms:
newSel2.append(at)
if len(newSel2)!=lenSel:
self.vf.clearSelection(topCommand=0)
if len(newSel2):
newSel2 = newSel2.findType(elementClass).uniq()
self.vf.select(newSel2, topCommand=0)
#this fixed a bug which occurred when only 1 molecule present
#and cmd invoked with mv.deleteAtomSet(mv.Mols[0].allAtoms)
if not done:
for at in ats: del at
self.vf.resetUndo(topCommand=0)