def exercise(): verbose = "--verbose" in sys.argv[1:] quick = "--quick" in sys.argv[1:] list_cif = server.mon_lib_list_cif() srv = server.server(list_cif=list_cif) print("srv.root_path:", srv.root_path) default_switch = "--default_off" not in sys.argv[1:] if (False or default_switch): monomers_with_commas = {} atom_id_counts = dicts.with_default_value(0) for row_id in list_cif.cif["comp_list"]["_chem_comp.id"]: if (quick and random.random() < 0.95): continue if (verbose): print("id:", row_id) comp_comp_id = srv.get_comp_comp_id_direct(comp_id=row_id) if (comp_comp_id is None): print("Could not instantiating comp_comp_id(%s)" % row_id) else: has_primes = False has_commas = False for atom in comp_comp_id.atom_list: atom_id_counts[atom.atom_id] += 1 if (atom.atom_id.find("'") >= 0): has_primes = True if (atom.atom_id.find(",") >= 0): has_commas = True if (has_commas): monomers_with_commas[ comp_comp_id.chem_comp.id] = has_primes print(monomers_with_commas) atom_ids = flex.std_string(list(atom_id_counts.keys())) counts = flex.size_t(list(atom_id_counts.values())) perm = flex.sort_permutation(data=counts, reverse=True) atom_ids = atom_ids.select(perm) counts = counts.select(perm) for atom_id, count in zip(atom_ids, counts): print(atom_id, count) if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue if (verbose): print("id:", row["_chem_comp.id"]) comp_comp_id = srv.get_comp_comp_id_direct( comp_id=row["_chem_comp.id"]) check_chem_comp(cif_types.chem_comp(**row), comp_comp_id) if ("--pickle" in sys.argv[1:]): easy_pickle.dump("mon_lib.pickle", srv) if (False or default_switch): comp = srv.get_comp_comp_id_direct("GLY") comp.show() mod = srv.mod_mod_id_dict["COO"] comp.apply_mod(mod).show() if (False or default_switch): comp = srv.get_comp_comp_id_direct("LYS") comp.show() mod = srv.mod_mod_id_dict["B2C"] comp.apply_mod(mod).show() if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (comp_comp_id is not None): if (comp_comp_id.classification == "peptide"): print(comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, end=' ') print(row["_chem_comp.group"], end=' ') grp = row["_chem_comp.group"].lower().strip() if (grp not in ("l-peptide", "d-peptide", "polymer")): print("LOOK", end=' ') #if (not os.path.isdir("look")): os.makedirs("look") #open("look/%s.cif" % row["_chem_comp.id"], "w").write( #open(comp_comp_id.file_name).read()) print() elif (row["_chem_comp.group"].lower().find("peptide") >= 0 or comp_comp_id.chem_comp.group.lower().find("peptide") >= 0): print(comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, end=' ') print(row["_chem_comp.group"], "MISMATCH") if (comp_comp_id.classification in ("RNA", "DNA")): print(comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, end=' ') print(row["_chem_comp.group"], end=' ') if (comp_comp_id.classification != row["_chem_comp.group"].strip()): print(comp_comp_id.classification, "MISMATCH", end=' ') print() elif (row["_chem_comp.group"].lower().find("NA") >= 0 or comp_comp_id.chem_comp.group.lower().find("NA") >= 0): print(comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, end=' ') print(row["_chem_comp.group"], "MISMATCH") if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (comp_comp_id is not None): planes = comp_comp_id.get_planes() for plane in planes: dist_esd_dict = {} for plane_atom in plane.plane_atoms: dist_esd_dict[str(plane_atom.dist_esd)] = 0 # FIXME: might break compat for py2/3 because indexing a values call if (len(dist_esd_dict) != 1 or list(dist_esd_dict.keys())[0] != "0.02"): print(comp_comp_id.chem_comp.id, plane.plane_id, end=' ') print(list(dist_esd_dict.keys())) if (False or default_switch): standard_amino_acids = [ "GLY", "VAL", "ALA", "LEU", "ILE", "PRO", "MET", "PHE", "TRP", "SER", "THR", "TYR", "CYS", "ASN", "GLN", "ASP", "GLU", "LYS", "ARG", "HIS" ] for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): is_standard_aa = row["_chem_comp.id"] in standard_amino_acids if (1 and not is_standard_aa): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (is_standard_aa): assert comp_comp_id is not None assert comp_comp_id.chem_comp.group.strip() == "L-peptide" if (comp_comp_id is not None): print(comp_comp_id.chem_comp.id.strip(), end=' ') print(comp_comp_id.chem_comp.name.strip(), end=' ') print(comp_comp_id.chem_comp.group.strip()) for tor in comp_comp_id.tor_list: print(" tor:", tor.atom_id_1, tor.atom_id_2, end=' ') print(tor.atom_id_3, tor.atom_id_4, tor.value_angle, end=' ') print(tor.value_angle_esd, tor.period) for chir in comp_comp_id.chir_list: print(" chir:", chir.atom_id_centre, chir.atom_id_1, end=' ') print(chir.atom_id_2, chir.atom_id_3, chir.volume_sign) if (False or default_switch): elib = server.ener_lib() if (False or default_switch): for syn in elib.lib_synonym.items(): print(syn) if (False or default_switch): for vdw in elib.lib_vdw: vdw.show() print("OK")
def exercise(): chem_comp = cif_types.chem_comp( id="Id", three_letter_code="TLC", name="Name", group="Group", number_atoms_all=22, number_atoms_nh=11, desc_level="") comp_comp_id = cif_types.comp_comp_id(source_info=None, chem_comp=chem_comp) for i,a in enumerate("ABC"): comp_comp_id.atom_list.append(cif_types.chem_comp_atom( atom_id="I"+a, type_symbol="T"+a, type_energy="E"+a, partial_charge=i)) comp_comp_id.bond_list.append(cif_types.chem_comp_bond( atom_id_1="IA", atom_id_2="IC", type="single", value_dist="1", value_dist_esd="2")) comp_comp_id.bond_list.append(cif_types.chem_comp_bond( atom_id_1="IB", atom_id_2="IC", type="double", value_dist="3", value_dist_esd="4")) s = StringIO.StringIO() comp_comp_id.show(s) assert s.getvalue() == """\ loop_ _chem_comp_atom.atom_id _chem_comp_atom.type_symbol _chem_comp_atom.type_energy _chem_comp_atom.partial_charge IA TA EA 0.0 IB TB EB 1.0 IC TC EC 2.0 loop_ _chem_comp_bond.atom_id_1 _chem_comp_bond.atom_id_2 _chem_comp_bond.type _chem_comp_bond.value_dist _chem_comp_bond.value_dist_esd _chem_comp_bond.value_dist_neutron IA IC single 1.0 2.0 . IB IC double 3.0 4.0 . """ chem_mod = cif_types.chem_mod( id="MI", name="Name", comp_id="Comp Id", group_id="Group Id") mod_mod_id = cif_types.mod_mod_id(source_info=None, chem_mod=chem_mod) mod_mod_id.atom_list.append(cif_types.chem_mod_atom( function="add", atom_id="", new_atom_id="ID", new_type_symbol="TD", new_type_energy="TD", new_partial_charge=5)) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 4 assert len(c.bond_list) == 2 s = StringIO.StringIO() c.show(s) assert s.getvalue().splitlines()[8] == "ID TD TD 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom( function="change", atom_id="IA", new_atom_id="ID", new_type_symbol="TD", new_type_energy="ED", new_partial_charge=5) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 2 s = StringIO.StringIO() c.show(s) assert s.getvalue().splitlines()[5] == "ID TD ED 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom( function="change", atom_id="IA", new_atom_id="IA", new_type_symbol="TD", new_type_energy="ED", new_partial_charge=5) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 2 s = StringIO.StringIO() c.show(s) assert s.getvalue().splitlines()[5] == "IA TD ED 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom( function="delete", atom_id="IC", new_atom_id="", new_type_symbol="", new_type_energy="", new_partial_charge="") c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 2 assert len(c.bond_list) == 0 mod_mod_id.atom_list = [] mod_mod_id.bond_list.append(cif_types.chem_mod_bond( function="add", atom_id_1="IA", atom_id_2="IB", new_type="triple", new_value_dist=5, new_value_dist_esd=6)) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 3 s = StringIO.StringIO() c.show(s) assert s.getvalue().splitlines()[-2] == "IA IB triple 5.0 6.0 ." mod_mod_id.bond_list[0] = cif_types.chem_mod_bond( function="change", atom_id_1="IA", atom_id_2="IC", new_type="quadruple", new_value_dist=7, new_value_dist_esd=8) c = comp_comp_id.apply_mod(mod_mod_id) s = StringIO.StringIO() c.show(s) assert s.getvalue().splitlines()[-3] == "IA IC quadruple 7.0 8.0 ." print "OK"
def exercise(): verbose = "--verbose" in sys.argv[1:] quick = "--quick" in sys.argv[1:] list_cif = server.mon_lib_list_cif() srv = server.server(list_cif=list_cif) print "srv.root_path:", srv.root_path default_switch = "--default_off" not in sys.argv[1:] if (False or default_switch): monomers_with_commas = {} atom_id_counts = dicts.with_default_value(0) for row_id in list_cif.cif["comp_list"]["_chem_comp.id"]: if (quick and random.random() < 0.95): continue if (verbose): print "id:", row_id comp_comp_id = srv.get_comp_comp_id_direct(comp_id=row_id) if (comp_comp_id is None): print "Error instantiating comp_comp_id(%s)" % row_id else: has_primes = False has_commas = False for atom in comp_comp_id.atom_list: atom_id_counts[atom.atom_id] += 1 if (atom.atom_id.find("'") >= 0): has_primes = True if (atom.atom_id.find(",") >= 0): has_commas = True if (has_commas): monomers_with_commas[comp_comp_id.chem_comp.id] = has_primes print monomers_with_commas atom_ids = flex.std_string(atom_id_counts.keys()) counts = flex.size_t(atom_id_counts.values()) perm = flex.sort_permutation(data=counts, reverse=True) atom_ids = atom_ids.select(perm) counts = counts.select(perm) for atom_id,count in zip(atom_ids, counts): print atom_id, count if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue if (verbose): print "id:", row["_chem_comp.id"] comp_comp_id = srv.get_comp_comp_id_direct(comp_id=row["_chem_comp.id"]) check_chem_comp(cif_types.chem_comp(**row), comp_comp_id) if ("--pickle" in sys.argv[1:]): easy_pickle.dump("mon_lib.pickle", srv) if (False or default_switch): comp = srv.get_comp_comp_id_direct("GLY") comp.show() mod = srv.mod_mod_id_dict["COO"] comp.apply_mod(mod).show() if (False or default_switch): comp = srv.get_comp_comp_id_direct("LYS") comp.show() mod = srv.mod_mod_id_dict["B2C"] comp.apply_mod(mod).show() if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (comp_comp_id is not None): if (comp_comp_id.classification == "peptide"): print comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, print row["_chem_comp.group"], grp = row["_chem_comp.group"].lower().strip() if (grp not in ("l-peptide", "d-peptide", "polymer")): print "LOOK", #if (not os.path.isdir("look")): os.makedirs("look") #open("look/%s.cif" % row["_chem_comp.id"], "w").write( #open(comp_comp_id.file_name).read()) print elif (row["_chem_comp.group"].lower().find("peptide") >= 0 or comp_comp_id.chem_comp.group.lower().find("peptide") >= 0): print comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, print row["_chem_comp.group"], "MISMATCH" if (comp_comp_id.classification in ("RNA", "DNA")): print comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, print row["_chem_comp.group"], if (comp_comp_id.classification != row["_chem_comp.group"].strip()): print comp_comp_id.classification, "MISMATCH", print elif (row["_chem_comp.group"].lower().find("NA") >= 0 or comp_comp_id.chem_comp.group.lower().find("NA") >= 0): print comp_comp_id.chem_comp.id, comp_comp_id.chem_comp.name, print row["_chem_comp.group"], "MISMATCH" if (False or default_switch): for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): if (quick and random.random() < 0.95): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (comp_comp_id is not None): planes = comp_comp_id.get_planes() for plane in planes: dist_esd_dict = {} for plane_atom in plane.plane_atoms: dist_esd_dict[str(plane_atom.dist_esd)] = 0 if (len(dist_esd_dict) != 1 or dist_esd_dict.keys()[0] != "0.02"): print comp_comp_id.chem_comp.id, plane.plane_id, print dist_esd_dict.keys() if (False or default_switch): standard_amino_acids = [ "GLY", "VAL", "ALA", "LEU", "ILE", "PRO", "MET", "PHE", "TRP", "SER", "THR", "TYR", "CYS", "ASN", "GLN", "ASP", "GLU", "LYS", "ARG", "HIS"] for row in list_cif.cif["comp_list"]["_chem_comp"].iterrows(): is_standard_aa = row["_chem_comp.id"] in standard_amino_acids if (1 and not is_standard_aa): continue comp_comp_id = srv.get_comp_comp_id_direct(row["_chem_comp.id"]) if (is_standard_aa): assert comp_comp_id is not None assert comp_comp_id.chem_comp.group.strip() == "L-peptide" if (comp_comp_id is not None): print comp_comp_id.chem_comp.id.strip(), print comp_comp_id.chem_comp.name.strip(), print comp_comp_id.chem_comp.group.strip() for tor in comp_comp_id.tor_list: print " tor:", tor.atom_id_1, tor.atom_id_2, print tor.atom_id_3, tor.atom_id_4, tor.value_angle, print tor.value_angle_esd, tor.period for chir in comp_comp_id.chir_list: print " chir:", chir.atom_id_centre, chir.atom_id_1, print chir.atom_id_2, chir.atom_id_3, chir.volume_sign if (False or default_switch): elib = server.ener_lib() if (False or default_switch): for syn in elib.lib_synonym.items(): print syn if (False or default_switch): for vdw in elib.lib_vdw: vdw.show() print "OK"
def exercise(): chem_comp = cif_types.chem_comp(id="Id", three_letter_code="TLC", name="Name", group="Group", number_atoms_all=22, number_atoms_nh=11, desc_level="") comp_comp_id = cif_types.comp_comp_id(source_info=None, chem_comp=chem_comp) for i, a in enumerate("ABC"): comp_comp_id.atom_list.append( cif_types.chem_comp_atom(atom_id="I" + a, type_symbol="T" + a, type_energy="E" + a, partial_charge=i)) comp_comp_id.bond_list.append( cif_types.chem_comp_bond(atom_id_1="IA", atom_id_2="IC", type="single", value_dist="1", value_dist_esd="2")) comp_comp_id.bond_list.append( cif_types.chem_comp_bond(atom_id_1="IB", atom_id_2="IC", type="double", value_dist="3", value_dist_esd="4")) s = StringIO() comp_comp_id.show(s) assert s.getvalue() == """\ loop_ _chem_comp_atom.atom_id _chem_comp_atom.type_symbol _chem_comp_atom.type_energy _chem_comp_atom.partial_charge IA TA EA 0.0 IB TB EB 1.0 IC TC EC 2.0 loop_ _chem_comp_bond.atom_id_1 _chem_comp_bond.atom_id_2 _chem_comp_bond.type _chem_comp_bond.value_dist _chem_comp_bond.value_dist_esd _chem_comp_bond.value_dist_neutron IA IC single 1.0 2.0 . IB IC double 3.0 4.0 . """ chem_mod = cif_types.chem_mod(id="MI", name="Name", comp_id="Comp Id", group_id="Group Id") mod_mod_id = cif_types.mod_mod_id(source_info=None, chem_mod=chem_mod) mod_mod_id.atom_list.append( cif_types.chem_mod_atom(function="add", atom_id="", new_atom_id="ID", new_type_symbol="TD", new_type_energy="TD", new_partial_charge=5)) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 4 assert len(c.bond_list) == 2 s = StringIO() c.show(s) assert s.getvalue().splitlines()[8] == "ID TD TD 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom(function="change", atom_id="IA", new_atom_id="ID", new_type_symbol="TD", new_type_energy="ED", new_partial_charge=5) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 2 s = StringIO() c.show(s) assert s.getvalue().splitlines()[5] == "ID TD ED 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom(function="change", atom_id="IA", new_atom_id="IA", new_type_symbol="TD", new_type_energy="ED", new_partial_charge=5) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 2 s = StringIO() c.show(s) assert s.getvalue().splitlines()[5] == "IA TD ED 5.0" mod_mod_id.atom_list[0] = cif_types.chem_mod_atom(function="delete", atom_id="IC", new_atom_id="", new_type_symbol="", new_type_energy="", new_partial_charge="") c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 2 assert len(c.bond_list) == 0 mod_mod_id.atom_list = [] mod_mod_id.bond_list.append( cif_types.chem_mod_bond(function="add", atom_id_1="IA", atom_id_2="IB", new_type="triple", new_value_dist=5, new_value_dist_esd=6)) c = comp_comp_id.apply_mod(mod_mod_id) assert len(c.atom_list) == 3 assert len(c.bond_list) == 3 s = StringIO() c.show(s) assert s.getvalue().splitlines()[-2] == "IA IB triple 5.0 6.0 ." mod_mod_id.bond_list[0] = cif_types.chem_mod_bond(function="change", atom_id_1="IA", atom_id_2="IC", new_type="quadruple", new_value_dist=7, new_value_dist_esd=8) c = comp_comp_id.apply_mod(mod_mod_id) s = StringIO() c.show(s) assert s.getvalue().splitlines()[-3] == "IA IC quadruple 7.0 8.0 ." print("OK")