|
From: <nwm...@us...> - 2012-04-26 17:13:22
|
Revision: 15363
http://cctbx.svn.sourceforge.net/cctbx/?rev=15363&view=rev
Author: nwmoriarty
Date: 2012-04-26 17:13:12 +0000 (Thu, 26 Apr 2012)
Log Message:
-----------
added mechanism to merge GetStd and Mon Lib links
and test
Modified Paths:
--------------
trunk/mmtbx/monomer_library/server.py
trunk/mmtbx/monomer_library/tst_pdb_interpretation.py
Modified: trunk/mmtbx/monomer_library/server.py
===================================================================
--- trunk/mmtbx/monomer_library/server.py 2012-04-26 15:58:33 UTC (rev 15362)
+++ trunk/mmtbx/monomer_library/server.py 2012-04-26 17:13:12 UTC (rev 15363)
@@ -61,6 +61,12 @@
relative_path_components=["list", "mon_lib_list.cif"],
strict=strict)
+def geostd_list_cif(path=None, strict=False):
+ return mon_lib_cif_loader(
+ path=path,
+ relative_path_components=["list", "geostd_list.cif"],
+ strict=strict)
+
def mon_lib_ener_lib_cif(path=None, strict=False):
return mon_lib_cif_loader(
path=path,
@@ -211,9 +217,55 @@
class server(process_cif_mixin):
- def __init__(self, list_cif=None):
+ def __init__(self, list_cif=None, another_list_cif=None, verbose = False):
if (list_cif is None):
list_cif = mon_lib_list_cif()
+ if (another_list_cif is None):
+ # get the geostd CIF links object and merge
+ geostd_list_cif_obj = geostd_list_cif()
+ mon_lib_cif = list_cif.cif
+ geostd_cif = geostd_list_cif_obj.cif
+ for geostd_block_key in geostd_cif:
+ geostd_block = geostd_cif[geostd_block_key]
+ mon_lib_block = mon_lib_cif.get(geostd_block_key)
+ if mon_lib_block:
+ # add to loops row-wise
+ geostd_loop_key = geostd_block.keys()
+ if not geostd_loop_key: continue
+ geostd_loop_key = geostd_loop_key[0]
+ if geostd_loop_key.find(".")==-1: continue
+ geostd_loop_key = geostd_loop_key.split(".")[0]
+ geostd_loop = geostd_block.get(geostd_loop_key)
+ mon_lib_loop = mon_lib_block.get(geostd_loop_key)
+ if not mon_lib_loop: continue
+ if verbose: print '''
+%s
+ Adding rows to CIF
+ block "%s"
+ loop "%s
+%s
+''' % (
+ "-"*80,
+ geostd_block_key,
+ geostd_loop_key,
+ "-"*80,
+ )
+ for row in geostd_loop.iterrows():
+ if verbose:
+ for key in row:
+ print " %-20s : %s" % (
+ key.replace("%s." % geostd_loop_key, ""),
+ row[key],
+ )
+ print
+ mon_lib_loop.add_row(row.values())
+ else:
+ # add block
+ if verbose:
+ print '\n%s\n Adding CIF block\n%s' % ("-"*80, "-"*80)
+ print geostd_block
+ mon_lib_cif[geostd_block_key] = geostd_block
+
self.root_path = os.path.dirname(os.path.dirname(list_cif.path))
self.geostd_path = os.path.join(os.path.dirname(self.root_path), "geostd")
self.deriv_list_dict = {}
Modified: trunk/mmtbx/monomer_library/tst_pdb_interpretation.py
===================================================================
--- trunk/mmtbx/monomer_library/tst_pdb_interpretation.py 2012-04-26 15:58:33 UTC (rev 15362)
+++ trunk/mmtbx/monomer_library/tst_pdb_interpretation.py 2012-04-26 17:13:12 UTC (rev 15363)
@@ -1304,10 +1304,66 @@
ignore_unknown_nonbonded_energy_types=False)
assert (msg is None)
+def exercise_geostd_cif_links(mon_lib_srv, ener_lib):
+ raw_records = """\
+ATOM 6707 C1 MAN D9032 -82.149 64.388 127.264 1.00 20.00 C
+ATOM 6708 C2 MAN D9032 -82.661 63.644 128.508 1.00 20.00 C
+ATOM 6709 O2 MAN D9032 -81.755 62.603 128.885 1.00 20.00 O
+ATOM 6710 C3 MAN D9032 -83.112 64.561 129.660 1.00 20.00 C
+ATOM 6711 O3 MAN D9032 -83.036 63.857 130.877 1.00 20.00 O
+ATOM 6712 C4 MAN D9032 -82.378 65.900 129.641 1.00 20.00 C
+ATOM 6713 O4 MAN D9032 -82.870 66.786 130.611 1.00 20.00 O
+ATOM 6714 C5 MAN D9032 -82.589 66.508 128.255 1.00 20.00 C
+ATOM 6715 O5 MAN D9032 -81.778 65.758 127.405 1.00 20.00 O
+ATOM 6716 C6 MAN D9032 -82.234 68.002 128.113 1.00 20.00 C
+ATOM 6717 O6 MAN D9032 -83.296 68.629 127.421 1.00 20.00 O
+ATOM 6718 O1 MAN D8032 -82.173 69.386 124.623 1.00 20.00 O
+ATOM 6719 C1 MAN D8032 -82.135 70.338 125.650 1.00 20.00 C
+ATOM 6720 C2 MAN D8032 -83.046 69.904 126.785 1.00 20.00 C
+ATOM 6721 C3 MAN D8032 -83.124 71.033 127.800 1.00 20.00 C
+ATOM 6722 O3 MAN D8032 -83.760 70.573 128.974 1.00 20.00 O
+ATOM 6723 C4 MAN D8032 -81.746 71.580 128.181 1.00 20.00 C
+ATOM 6724 O4 MAN D8032 -81.878 72.934 128.571 1.00 20.00 O
+ATOM 6725 C5 MAN D8032 -80.638 71.462 127.125 1.00 20.00 C
+ATOM 6726 O5 MAN D8032 -80.827 70.430 126.159 1.00 20.00 O
+ATOM 6727 C6 MAN D8032 -79.314 71.191 127.833 1.00 20.00 C
+ATOM 6728 O6 MAN D8032 -79.563 70.916 129.196 1.00 20.00 O
+""".splitlines()
+ link_def = """\
+apply_cif_link {
+ data_link = ALPHA2-6
+ residue_selection_1 = chain D and resname MAN and resseq 9032
+ residue_selection_2 = chain D and resname MAN and resseq 8032
+}
+"""
+ links_phil = iotbx.phil.parse(
+ mmtbx.monomer_library.pdb_interpretation.master_params_str,
+ process_includes=True,
+ )
+ links = libtbx.phil.parse(link_def)
+ params_links = links_phil.fetch(source=links)
+ #params_links.show()
+ params_links = params_links.extract()
+
+ log = StringIO()
+ processed_pdb_file = monomer_library.pdb_interpretation.process(
+ mon_lib_srv=mon_lib_srv,
+ ener_lib=ener_lib,
+ file_name=None,
+ raw_records=raw_records,
+ #force_symmetry=True,
+ params=params_links,
+ log=log,
+ )
+ #print log.getvalue()
+ pat = "data_link: ALPHA2-6"
+ assert log.getvalue().find(pat) >= 0
+
def run(args):
assert len(args) == 0
mon_lib_srv = monomer_library.server.server()
ener_lib = monomer_library.server.ener_lib()
+ exercise_geostd_cif_links(mon_lib_srv, ener_lib)
exercise_handle_case_insensitive(mon_lib_srv, ener_lib)
exercise_pdb_string(mon_lib_srv, ener_lib)
exercise_cns_rna(mon_lib_srv, ener_lib)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|