def _create_atom(self, atom_type): """Simple, private helper function for __init__ """ element = atom_type name = element + str(0) at = Atom(name=name, chemicalElement=element) at._charges = {'gridmap': 1.0} at.chargeSet = 'gridmap' at.number = 1 at._coords = [[0., 0., 0.]] at.conformation = 0 #these 2 would change between maps: at.autodock_element = element return at
def _create_atom(self, atom_type): """Simple, private helper function for __init__ """ element = atom_type name = element + str(0) at = Atom(name=name, chemicalElement=element) at._charges = {'gridmap': 1.0} at.chargeSet = 'gridmap' at.number = 1 at._coords = [[0., 0., 0.]] at.conformation = 0 #these 2 would change between maps: at.autodock_element = element #volumes are in the scorer #at.AtVol = self.at_vols.get(element, 0.0) #print "set AtVol to", at.AtVol return at
def makeMoleculeFromAtoms(molname, atomSet): """ create a new molecule from a list of atoms mol <- makeMoleculeFromAtoms(molname, atomSet) """ from MolKit.molecule import Atom, AtomSet from MolKit.protein import Protein, Chain, Residue # create the top object mol = Protein(name=molname) # find out all residues residues = atomSet.parent.uniq() # find out all chains chains = residues.parent.uniq() # create all chains chainsd = {} for c in chains: newchain = Chain(c.id, mol, top=mol) chainsd[c] = newchain # create all residues resd = {} for res in residues: newres = Residue(res.name[:3], res.name[3:], res.icode, chainsd[res.parent], top=mol) resd[res] = newres newres.hasCA = 0 newres.hasO = 0 # create all the atoms newats = [] for num, at in enumerate(atomSet): name = at.name res = resd[at.parent] if name == 'CA': res.hasCA = 1 if name == 'O' or name == 'OXT' or (len(name)>3 and name[:3]=='OCT'): res.hasO = 2 newat = Atom(name, res, at.element, top=mol) newats.append(newat) # set constructotr attributes newat._coords = [] for coords in at._coords: newat._coords.append(coords[:]) newat.conformation = at.conformation newat.chemElem = at.chemElem newat.atomicNumber = at.atomicNumber newat.bondOrderRadius = at.bondOrderRadius newat.covalentRadius = at.covalentRadius newat.vdwRadius = at.vdwRadius newat.maxBonds = at.maxBonds newat.organic = at.organic newat.colors = at.colors.copy() newat.opacities = at.opacities.copy() newat._charges = at._charges.copy() newat.chargeSet = at.chargeSet # set attributes from PDB parser newat.segID = at.segID newat.hetatm = at.hetatm newat.normalname = at.normalname newat.number = num #at.number newat.occupancy = at.occupancy newat.temperatureFactor = at.temperatureFactor newat.altname = at.altname # attribute created by PQR parser if hasattr(at, 'pqrRadius'): newat.pqrRadius = at.pqrRadius # attribute created by F2D parser if hasattr(at, 'hbstatus'): newat.hbstatus = at.hbstatus # attribute created by PDBQ parser if hasattr(at, 'autodock_element'): newat.autodock_element = at.autodock_element # attribute created by PDBQT parser #if hasattr(at, ''): # newat. = at. # attribute created by PDBQS parser if hasattr(at, 'AtVol'): newat.AtVol = at.AtVol newat.AtSolPar = at.AtSolPar mol.allAtoms = AtomSet(newats) return mol
def makeMoleculeFromAtoms(molname, atomSet): """ create a new molecule from a list of atoms mol <- makeMoleculeFromAtoms(molname, atomSet) """ from MolKit.molecule import Atom, AtomSet from MolKit.protein import Protein, Chain, Residue # create the top object mol = Protein(name=molname) # find out all residues residues = atomSet.parent.uniq() # find out all chains chains = residues.parent.uniq() # create all chains chainsd = {} for c in chains: newchain = Chain(c.id, mol, top=mol) chainsd[c] = newchain # create all residues resd = {} for res in residues: newres = Residue(res.name[:3], res.name[3:], res.icode, chainsd[res.parent], top=mol) resd[res] = newres newres.hasCA = 0 newres.hasO = 0 # create all the atoms newats = [] for num, at in enumerate(atomSet): name = at.name res = resd[at.parent] name1 = name if hasattr(at, "altname") and at.altname != None: name = at.name.split("@")[0] if name == 'CA': res.hasCA = 1 if name == 'O' or name == 'OXT' or (len(name) > 3 and name[:3] == 'OCT'): res.hasO = 2 newat = Atom(name, res, at.element, top=mol) if name != name1: newat.name = name1 newat.altname = at.altname newats.append(newat) # set constructotr attributes newat._coords = [] for coords in at._coords: newat._coords.append(coords[:]) newat.conformation = at.conformation newat.chemElem = at.chemElem newat.atomicNumber = at.atomicNumber newat.bondOrderRadius = at.bondOrderRadius newat.covalentRadius = at.covalentRadius newat.vdwRadius = at.vdwRadius newat.maxBonds = at.maxBonds newat.organic = at.organic newat.colors = at.colors.copy() newat.opacities = at.opacities.copy() newat._charges = at._charges.copy() newat.chargeSet = at.chargeSet # set attributes from PDB parser try: # pdbqs do not have this newat.segID = at.segID except AttributeError: pass newat.hetatm = at.hetatm try: # pdbqs do not have this newat.normalname = at.normalname except AttributeError: pass newat.number = num #at.number newat.occupancy = at.occupancy newat.temperatureFactor = at.temperatureFactor newat.altname = at.altname # attribute created by PQR parser if hasattr(at, 'pqrRadius'): newat.pqrRadius = at.pqrRadius # attribute created by F2D parser if hasattr(at, 'hbstatus'): newat.hbstatus = at.hbstatus # attribute created by PDBQ parser if hasattr(at, 'autodock_element'): newat.autodock_element = at.autodock_element # attribute created by PDBQT parser #if hasattr(at, ''): # newat. = at. # attribute created by PDBQS parser if hasattr(at, 'AtVol'): newat.AtVol = at.AtVol newat.AtSolPar = at.AtSolPar mol.allAtoms = AtomSet(newats) return mol