Beispiel #1
0
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"
Beispiel #3
0
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"
Beispiel #4
0
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")