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