mailr27712 - in /trunk: lib/structure/internal/object.py pipe_control/structure/main.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on February 23, 2015 - 10:07:
Author: bugman
Date: Mon Feb 23 10:06:59 2015
New Revision: 27712

URL: http://svn.gna.org/viewcvs/relax?rev=27712&view=rev
Log:
Large speed up of the structure.web_of_motion user function.

With the introduction of the _sort() internal structural object method and it 
being called by the
add_atom(), the structure.web_of_motion user function was now painfully slow. 
 As sorting the
structural data is unnecessary for the backend of this user function, the 
add_atom() boolean
argument 'sort' has been added to turn the sorting on and off, and the 
structure.web_of_motion
backend now sets this to False.


Modified:
    trunk/lib/structure/internal/object.py
    trunk/pipe_control/structure/main.py

Modified: trunk/lib/structure/internal/object.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/structure/internal/object.py?rev=27712&r1=27711&r2=27712&view=diff
==============================================================================
--- trunk/lib/structure/internal/object.py      (original)
+++ trunk/lib/structure/internal/object.py      Mon Feb 23 10:06:59 2015
@@ -1092,7 +1092,7 @@
         return sheet
 
 
-    def add_atom(self, mol_name=None, atom_name=None, res_name=None, 
res_num=None, pos=[None, None, None], element=None, atom_num=None, 
chain_id=None, segment_id=None, pdb_record=None):
+    def add_atom(self, mol_name=None, atom_name=None, res_name=None, 
res_num=None, pos=[None, None, None], element=None, atom_num=None, 
chain_id=None, segment_id=None, pdb_record=None, sort=False):
         """Add a new atom to the structural data object.
 
         @keyword mol_name:      The name of the molecule.
@@ -1115,6 +1115,8 @@
         @type segment_id:       str or None
         @keyword pdb_record:    The optional PDB record name, e.g. 'ATOM' or 
'HETATM'.
         @type pdb_record:       str or None
+        @keyword sort:          A flag which if True will cause the 
structural data to be sorted after adding the atom.
+        @type sort:             bool
         """
 
         # Add a model if not present.
@@ -1152,7 +1154,8 @@
             mol.atom_add(atom_name=atom_name, res_name=res_name, 
res_num=res_num, pos=model_pos, element=element, atom_num=atom_num, 
chain_id=chain_id, segment_id=segment_id, pdb_record=pdb_record)
 
             # Sort.
-            mol._sort()
+            if sort:
+                mol._sort()
 
 
     def add_coordinates(self, coord=None, mol_names=None, res_names=None, 
res_nums=None, atom_names=None, elements=None, set_mol_name=None, 
set_model_num=None):

Modified: trunk/pipe_control/structure/main.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/pipe_control/structure/main.py?rev=27712&r1=27711&r2=27712&view=diff
==============================================================================
--- trunk/pipe_control/structure/main.py        (original)
+++ trunk/pipe_control/structure/main.py        Mon Feb 23 10:06:59 2015
@@ -89,7 +89,7 @@
         cdp.structure = Internal()
 
     # Add the atoms.
-    cdp.structure.add_atom(mol_name=mol_name, atom_name=atom_name, 
res_name=res_name, res_num=res_num, pos=pos, element=element, 
atom_num=atom_num, chain_id=chain_id, segment_id=segment_id, 
pdb_record=pdb_record)
+    cdp.structure.add_atom(mol_name=mol_name, atom_name=atom_name, 
res_name=res_name, res_num=res_num, pos=pos, element=element, 
atom_num=atom_num, chain_id=chain_id, segment_id=segment_id, 
pdb_record=pdb_record, sort=True)
 
 
 def add_model(model_num=None):
@@ -1655,7 +1655,7 @@
         # Loop over the structures.
         for struct_index in range(len(ids)):
             # Add the atom.
-            web.add_atom(mol_name=mol_names[atom_index], 
atom_name=atom_names[atom_index], res_name=res_names[atom_index], 
res_num=res_nums[atom_index], pos=coord[struct_index, atom_index], 
element=elements[atom_index])
+            web.add_atom(mol_name=mol_names[atom_index], 
atom_name=atom_names[atom_index], res_name=res_names[atom_index], 
res_num=res_nums[atom_index], pos=coord[struct_index, atom_index], 
element=elements[atom_index], sort=False)
 
         # Loop over the structures again, this time twice.
         for k in range(len(ids)):




Related Messages


Powered by MHonArc, Updated Mon Feb 23 12:00:03 2015