Beispiel #1
0
 def get_res_key_and_atom(self, atom_info) :
   resd  = mdb_utils.get_resd(self.pdb_code,atom_info)
   MDBRes = mdb_utils.MDBResidue(**resd)
   reskey = MDBRes.get_residue_key()
   # since this is an atom there should be an alternat included if it exists
   # thus there is no reason to check for alternates like we do with residues.
   # if this assertion fails...happy hunting for why
   assert reskey in self.residues.keys()
   return reskey, atom_info.name 
Beispiel #2
0
 def run_ramalyze(self) :
   from mmtbx.validation import ramalyze
   ramalyze_result = ramalyze.ramalyze(self.hierarchy)
   for result in ramalyze_result.results :
     resd = mdb_utils.get_resd(self.pdb_code,result)
     MDBRes = mdb_utils.MDBResidue(**resd)
     reskey = MDBRes.get_residue_key()
     if reskey not in self.residues.keys(): # alternates likely exist
       reskeys = self.get_alternate_keys(resd)
       for k in reskeys :
         self.residues[k].add_ramalyze_result(result)
     else : # No alternates
       self.residues[reskey].add_ramalyze_result(result)
Beispiel #3
0
 def run_omegalyze(self) :
   from mmtbx.validation import omegalyze
   omegalyze_result = omegalyze.omegalyze(
                              pdb_hierarchy = self.hierarchy,
                              nontrans_only = False,
                              out           = sys.stdout,
                              quiet         = False)
   for result in omegalyze_result.results :
     resd = mdb_utils.get_resd(self.pdb_code,result)
     MDBRes = mdb_utils.MDBResidue(**resd)
     reskey = MDBRes.get_residue_key()
     if reskey not in self.residues.keys(): # alternates likely exist
       reskeys = self.get_alternate_keys(resd)
       for k in reskeys :
         self.residues[k].add_omegalyze_result(result)
     else : # No alternates
       self.residues[reskey].add_omegalyze_result(result)
Beispiel #4
0
 def run_cablam(self) :
   from mmtbx.validation import cablam
   cablam_result = cablam.cablamalyze(
                              pdb_hierarchy = self.hierarchy,
                              outliers_only = False,
                              out           = sys.stdout,
                              quiet         = False)
   t = True
   for result in cablam_result.results :
     resd = mdb_utils.get_resd(self.pdb_code,result)
     MDBRes = mdb_utils.MDBResidue(**resd)
     reskey = MDBRes.get_residue_key()
     if not result.prevres : continue
     if reskey in self.residues.keys() :
       self.residues[reskey].add_cablam_result(result)
     elif MDBRes.altloc != '' :
       # alts exist in reskey but the actual residue has no alt
       #assert MDBRes.altloc != '','"%s"' % MDBRes.altloc
       newkey = MDBRes.get_residue_key(no_alt=True)
       if newkey not in self.residues.keys() :
         print >> sys.stderr, 'WARNING : trouble finding %s' % reskey
       else :
         #print '  ' + newkey,newkey in self.residues.keys()
         cal = result.altloc
         result.altloc = ' '
         self.residues[newkey].add_cablam_result(result,cablam_altloc=cal)
     else : # Side chain has alternates but bb does not.
       for l in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' :
         newkey = MDBRes.get_residue_key(assign_alt=l)
         if newkey in self.residues.keys() :
           result.altloc = l
           self.residues[newkey].add_cablam_result(result)
         newkey = MDBRes.get_residue_key(assign_alt=l.lower())
         if newkey in self.residues.keys() :
           result.altloc = l.lower()
           result.altloc = self.residues[newkey].add_cablam_result(result)
Beispiel #5
0
 def run_clashscore_validation(self) :
   from val_clashscore import CLASHSCOREvalidation
   try :
     vc = CLASHSCOREvalidation(self.pdb_file,self.detail,self.mdb_document,
            self.pdb_code,self.do_flips)
   except : pass
   else :
     self.mdb_document = vc.mdb_document
     if self.detail == 'residue' :
       for clash in vc.result.results :
         clashatoms = []
         for i,atom in enumerate(clash.atoms_info) :
           resd = mdb_utils.get_resd(self.pdb_code,atom)
           MDBRes = mdb_utils.MDBResidue(**resd)
           reskey = MDBRes.get_residue_key()
           # When dealing with alts in only a portion of the residue, reskey 
           # (as just defined) will not be found in self.residues.keys().
           # The reason is that initiate_residues takes a residue with n alts
           # and splits into n separate residues. e.g. if a residue has alt
           # A and B in one residue atom for just sidchain atoms, there will
           # exist two residues, A and B, both having the atoms that don't have
           # alts and each having their respective alt atoms. When this is the
           # case we remedy by putting the clash in both A and B. This is what
           # the folllowing code is doing.
           if reskey not in self.residues.keys():
             reskeys = self.get_alternate_keys(resd)
             reskey = [k for k in reskeys]
           clashatoms.append({'targ_reskey':reskey,
                              'targname':atom.name,
                              'overlap':clash.overlap})
         assert len(clashatoms) == 2
         # targ and src can be confusing here. The following puts targ reskey
         # targname in the coresponding src residue. Take the following clash :
         #    A  72  ARG  HG2  A  72  ARG  O   :-1.038
         # clashatoms[0] = {'targname': ' HG2', 'targ_reskey': '1ubqA72ARG'}
         # clashatoms[1] = {'targname': ' O  ', 'targ_reskey': '1ubqA72ARG'}
         # we then put the src name in next :
         clashatoms[0]['srcname'] = clashatoms[1]['targname']
         clashatoms[1]['srcname'] = clashatoms[0]['targname']
         # next we add clashatoms[1] to the residue object corresponding to
         # clashatoms[0] and vise versa.
         if type(clashatoms[0]['targ_reskey']) == list :
           for tk in clashatoms[0]['targ_reskey'] :
             if type(clashatoms[1]['targ_reskey']) == list :
               for sk in clashatoms[1]['targ_reskey'] :
                 newdict = {'targ_reskey':sk,
                            'targname':clashatoms[1]['targname'],
                            'overlap':clashatoms[1]['overlap']}
                 self.residues[tk].add_clash(newdict)
             else :
               self.residues[tk].add_clash(clashatoms[1])
         else:
           self.residues[clashatoms[0]['targ_reskey']].add_clash(clashatoms[1])
         if type(clashatoms[1]['targ_reskey']) == list :
           for tk in clashatoms[1]['targ_reskey'] :
             if type(clashatoms[0]['targ_reskey']) == list :
               for sk in clashatoms[0]['targ_reskey'] :
                 newdict = {'targ_reskey':sk,
                            'targname':clashatoms[0]['targname'],
                            'overlap':clashatoms[0]['overlap']}
                 self.residues[tk].add_clash(newdict)
             else :
               self.residues[tk].add_clash(clashatoms[0])
         else:
           self.residues[clashatoms[1]['targ_reskey']].add_clash(clashatoms[0])