Exemplo n.º 1
0
def amber99(selection="(all)",quiet=0,_self=cmd):
    cmd=_self
    result = 1
    # first, set all parameters to zero

    cmd.alter(selection,"partial_charge=0")
    cmd.alter(selection,"elec_radius=0.0")
    cmd.alter(selection,"text_type=''")

    # next, flag all atoms so that we'll be able to detect what we miss
    
    cmd.flag(23,selection,'set')

    # get the amber99 dictionary
    
    if not hasattr(champ,'amber99_dict'):
        from chempy.champ.amber99 import amber99_dict
        champ.amber99_dict = amber99_dict

    # iterate through the residue dictionary matching each residue based on chemistry
    # and generating the expressions for reassigning formal charges
    
    alter_list = []
    for resn in champ.amber99_dict.keys():
        if cmd.select(tmp_sele1,"(%s) and resn %s"%(selection,resn))>0:
            entry = champ.amber99_dict[resn]
            for rule in entry:
                model = cmd.get_model(tmp_sele1)
                ch = Champ()
                model_pat = ch.insert_model(model)
                ch.pattern_detect_chirality(model_pat)
                assn_pat = ch.insert_pattern_string(rule[0])
                ch.pattern_clear_tags(model_pat)
                if ch.match_1v1_n(assn_pat,model_pat,10000,2)>0:
                    result = ch.pattern_get_ext_indices_with_tags(model_pat)
                    for atom_tag in result[0]: # just iterate over atom tags
                        if len(atom_tag[1])==1: # one and only one match
                            tag = atom_tag[1][0]
                            prop_list = rule[1][tag]
                            # the following expression both changes the formal charge and resets flag 23
                            alter_list.append([atom_tag[0],
            "name='''%s''';text_type='''%s''';partial_charge=%f;elec_radius=%f;flags=flags&-8388609"%prop_list])

    # now evaluate all of these expressions efficiently en-masse 
    cmd.alter_list(selection,alter_list)

    # see if we missed any atoms
    missed_count = cmd.count_atoms("("+selection+") and flag 23")

    if missed_count>0:
        if not quiet:
            # looks like we did, so alter the user
            print " WARNING: %d atoms did not have properties assigned"%missed_count
        result = 0

    # remove the temporary selection we used to select appropriate residues
    
    cmd.delete(tmp_sele1)

    return result
Exemplo n.º 2
0
Arquivo: B07.py Projeto: Almad/pymol
def load():
   cmd.set("valence")
   r = 0
   list = glob("pdb/*/*")

#   list = ["pdb/06/pdb406d"]
#   while list[0]!="pdb/f8/pdb1f8u":
#      list.pop(0)
   for file in list:
      cmd.delete('pdb')
      cmd.load(file,'pdb')
      cmd.remove("not alt ''+A")
      cmd.fix_chemistry("all","all")
      cmd.h_add()
      sys.__stderr__.write(file)
      sys.__stderr__.flush()
      ch = Champ()
      model = cmd.get_model('pdb')
      idx = ch.insert_model(model)

      ch.pattern_orient_bonds(idx)
      print " %5d"%cmd.count_atoms(),"%5d"%len(ch.pattern_get_string(idx)),
      ch.pattern_detect_chirality(idx)
      pat = ch.pattern_get_string(idx)
      print "%5d"%len(pat),pat[0:22]+"..."+pat[-10:]
            'ser', 'thr', 'trp', 'tyr', 'val'):

    stored.fc_dict = {}
    print "'" + string.upper(res) + "': ["
    print "   ("

    ch = Champ()
    cmd.fragment(res, "tmp")
    cmd.iterate("tmp", "stored.fc_dict[name]=formal_charge", quiet=1)
    cmd.alter("all", "formal_charge=0", quiet=1)
    cmd.remove("hydro", quiet=1)
    model = cmd.get_model("tmp")
    cmd.delete("tmp")

    m1 = ch.insert_model(model)
    ch.pattern_detect_chirality(m1)
    ch.pattern_orient_bonds(m1)
    pat1 = ch.pattern_get_string_with_names(m1)
    ch.pattern_detect_chirality(m1)
    pat2 = ch.pattern_get_string_with_names(m1)

    # confirm that CHAMP handles this pattern well...

    if pat1 != pat2:
        print " Chirality Assignment Error!"
        print pat1
        print pat2
        break
    else:
        pat = pat1
Exemplo n.º 4
0
print '''# NOTE: This file was autogenerated
aa_dict = {'
'''

for res in (  'ala','arg','asp','asn','cys','gln','glu','gly','his','ile','leu','lys','met','phe','pro','ser','thr','trp','tyr','val' ):

   print "'"+string.upper(res)+"': ["
   
   ch = Champ()
   cmd.fragment(res,"tmp")
   model = cmd.get_model("tmp")
   cmd.delete("tmp")
   
   m1 = ch.insert_model(model)
   ch.pattern_detect_chirality(m1)
   ch.pattern_orient_bonds(m1)
   pat1 = ch.pattern_get_string_with_names(m1)
   ch.pattern_detect_chirality(m1)
   pat2 = ch.pattern_get_string_with_names(m1)

# confirm that CHAMP handles this pattern well...

   if pat1!=pat2:
      print " Chirality Assignment Error!"
      print pat1
      print pat2
      break
   else:
      pat = pat1