mailr27623 - in /trunk/lib/structure/internal: molecules.py object.py


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

Header


Content

Posted by edward on February 11, 2015 - 10:17:
Author: bugman
Date: Wed Feb 11 10:17:07 2015
New Revision: 27623

URL: http://svn.gna.org/viewcvs/relax?rev=27623&view=rev
Log:
Implementation of methods for sorting sequence data in the internal 
structural object.

The information is sorted in the molecule container level using the new 
MolContainer._sort() private
method.  This uses the _sort_key() helper method which determines what the 
new order should be.
This is used as the 'key' argument for the Python sort() method.  Instead of 
list shuffling, new
lists in the correct order are created.  Although not memory efficient, this 
might be faster than
shuffling.


Modified:
    trunk/lib/structure/internal/molecules.py
    trunk/lib/structure/internal/object.py

Modified: trunk/lib/structure/internal/molecules.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/structure/internal/molecules.py?rev=27623&r1=27622&r2=27623&view=diff
==============================================================================
--- trunk/lib/structure/internal/molecules.py   (original)
+++ trunk/lib/structure/internal/molecules.py   Wed Feb 11 10:17:07 2015
@@ -258,6 +258,35 @@
         return fields
 
 
+    def _sort(self):
+        """Sort all structural data."""
+
+        # Create an index list for sorting the structural data.
+        indices = range(len(self.atom_name))
+        indices.sort(key=self._sort_key)
+
+        # Sort all lists.
+        self.atom_num = [self.atom_num[i] for i in indices]
+        self.atom_name = [self.atom_name[i] for i in indices]
+        self.bonded = [self.bonded[i] for i in indices]
+        self.chain_id = [self.chain_id[i] for i in indices]
+        self.element = [self.element[i] for i in indices]
+        self.pdb_record = [self.pdb_record[i] for i in indices]
+        self.res_name = [self.res_name[i] for i in indices]
+        self.res_num = [self.res_num[i] for i in indices]
+        self.seg_id = [self.seg_id[i] for i in indices]
+        self.x = [self.x[i] for i in indices]
+        self.y = [self.y[i] for i in indices]
+        self.z = [self.z[i] for i in indices]
+
+
+    def _sort_key(self, i):
+        """Return the information for sorting the sequence data."""
+
+        # Sort based on residue number.
+        return self.res_num[i]
+
+
     def atom_add(self, 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):
         """Method for adding an atom to the structural data object.
 

Modified: trunk/lib/structure/internal/object.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/structure/internal/object.py?rev=27623&r1=27622&r2=27623&view=diff
==============================================================================
--- trunk/lib/structure/internal/object.py      (original)
+++ trunk/lib/structure/internal/object.py      Wed Feb 11 10:17:07 2015
@@ -1159,6 +1159,9 @@
 
             # Add the atom.
             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()
 
 
     def add_model(self, model=None, coords_from=None):




Related Messages


Powered by MHonArc, Updated Wed Feb 11 10:40:02 2015