Author: bugman
Date: Tue Feb 10 12:54:17 2015
New Revision: 27614

URL: http://svn.gna.org/viewcvs/relax?rev=27614&view=rev
Log:
Huge speed up of the internal structural object validate_models() method.

The string formatting to create pseudo-PDB records and the large number of 
calls to the _translate()
method for atomic information string formatting has been shifted to only be 
called when atomic
information does not match.  Instead the structural information is directly 
compared within a large
if-else statement.


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

Modified: trunk/lib/structure/internal/object.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/structure/internal/object.py?rev=27614&r1=27613&r2=27614&view=diff
==============================================================================
--- trunk/lib/structure/internal/object.py      (original)
+++ trunk/lib/structure/internal/object.py      Tue Feb 10 12:54:17 2015
@@ -2689,14 +2689,27 @@
 
                 # Loop over the atoms.
                 for k in range(len(mol.atom_name)):
-                    # Create pseudo-pdb formatted records (with no atomic 
coordinates).
-                    atom = "%-6s%5s %4s%1s%3s %1s%4s%1s   %8s%8s%8s%6.2f%6.2f  
    %4s%2s%2s" % ('ATOM', mol.atom_num[k], self._translate(mol.atom_name[k]), 
'', self._translate(mol.res_name[k]), self._translate(mol.chain_id[k]), 
self._translate(mol.res_num[k]), '', '#', '#', '#', 1.0, 0, 
self._translate(mol.seg_id[k]), self._translate(mol.element[k]), '')
-                    atom_ref = "%-6s%5s %4s%1s%3s %1s%4s%1s   
%8s%8s%8s%6.2f%6.2f      %4s%2s%2s" % ('ATOM', mol_ref.atom_num[k], 
self._translate(mol_ref.atom_name[k]), '', 
self._translate(mol_ref.res_name[k]), self._translate(mol_ref.chain_id[k]), 
self._translate(mol_ref.res_num[k]), '', '#', '#', '#', 1.0, 0, 
self._translate(mol_ref.seg_id[k]), self._translate(mol_ref.element[k]), '')
-
-                    # Check the atom info.
-                    if atom != atom_ref:
-                        print(atom)
-                        print(atom_ref)
+                    # Check all data.
+                    same = True
+                    if mol.chain_id[k] != mol_ref.chain_id[k]:
+                        same = False
+                    elif mol.atom_num[k] != mol_ref.atom_num[k]:
+                        same = False
+                    elif mol.atom_name[k] != mol_ref.atom_name[k]:
+                        same = False
+                    elif mol.res_name[k] != mol_ref.res_name[k]:
+                        same = False
+                    elif mol.res_num[k] != mol_ref.res_num[k]:
+                        same = False
+                    elif mol.seg_id[k] != mol_ref.seg_id[k]:
+                        same = False
+                    elif mol.element[k] != mol_ref.element[k]:
+                        same = False
+
+                    # Failure.
+                    if not same:
+                        print("%-6s%5s %4s%1s%3s %1s%4s%1s   
%8s%8s%8s%6.2f%6.2f      %4s%2s%2s" % ('ATOM', mol.atom_num[k], 
self._translate(mol.atom_name[k]), '', self._translate(mol.res_name[k]), 
self._translate(mol.chain_id[k]), self._translate(mol.res_num[k]), '', '#', 
'#', '#', 1.0, 0, self._translate(mol.seg_id[k]), 
self._translate(mol.element[k]), ''))
+                        print("%-6s%5s %4s%1s%3s %1s%4s%1s   
%8s%8s%8s%6.2f%6.2f      %4s%2s%2s" % ('ATOM', mol_ref.atom_num[k], 
self._translate(mol_ref.atom_name[k]), '', 
self._translate(mol_ref.res_name[k]), self._translate(mol_ref.chain_id[k]), 
self._translate(mol_ref.res_num[k]), '', '#', '#', '#', 1.0, 0, 
self._translate(mol_ref.seg_id[k]), self._translate(mol_ref.element[k]), ''))
                         raise RelaxError("The atoms of model %i do not match 
the first model." % self.structural_data[i].num)
 
         # Final printout.


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
[email protected]

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits

Reply via email to