mailr15011 - /1.3/generic_fns/structure/internal.py


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

Header


Content

Posted by edward on November 23, 2011 - 13:52:
Author: bugman
Date: Wed Nov 23 13:52:58 2011
New Revision: 15011

URL: http://svn.gna.org/viewcvs/relax?rev=15011&view=rev
Log:
Fix for the numbering of the TER record and subsequence HETATM records in the 
PDB file creation.

The structure.write_pdb user function now creates the correct TER record 
after the ATOM records,
and the HETATM records are renumbered if needed.


Modified:
    1.3/generic_fns/structure/internal.py

Modified: 1.3/generic_fns/structure/internal.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/generic_fns/structure/internal.py?rev=15011&r1=15010&r2=15011&view=diff
==============================================================================
--- 1.3/generic_fns/structure/internal.py (original)
+++ 1.3/generic_fns/structure/internal.py Wed Nov 23 13:52:58 2011
@@ -1517,12 +1517,19 @@
                         file.write("%-6s%5s %4s%1s%3s %1s%4s%1s   
%8.3f%8.3f%8.3f%6.2f%6.2f      %4s%2s%2s\n" % ('ATOM', atom_num, 
self._translate(mol.atom_name[i]), '', self._translate(mol.res_name[i]), 
self._translate(mol.chain_id[i]), self._translate(mol.res_num[i]), '', 
self._translate(mol.x[i], 'float'), self._translate(mol.y[i], 'float'), 
self._translate(mol.z[i], 'float'), 1.0, 0, self._translate(mol.seg_id[i]), 
self._translate(mol.element[i]), ''))
                         num_atom = num_atom + 1
 
+                        # Info for the TER record.
+                        ter_num = atom_num + 1
+                        ter_name = mol.res_name[i]
+                        ter_chain_id = mol.chain_id[i]
+                        ter_res_num = mol.res_num[i]
+
                 # Finish the ATOM section with the TER record.
                 if atom_record:
-                    file.write("%-6s%5s      %3s %1s%4s%1s\n" % ('TER', 
num_atom+1, self._translate(mol.res_name[i]), 
self._translate(mol.chain_id[i]), self._translate(mol.res_num[i]), ''))
+                    file.write("%-6s%5s      %3s %1s%4s%1s\n" % ('TER', 
ter_num, self._translate(ter_name), self._translate(ter_chain_id), 
self._translate(ter_res_num), ''))
                     num_ter = num_ter + 1
 
                 # Loop over the atomic data.
+                count_shift = False
                 for i in xrange(len(mol.atom_name)):
                     # Write the HETATM record.
                     if mol.pdb_record[i] == 'HETATM':
@@ -1530,6 +1537,12 @@
                         atom_num = mol.atom_num[i]
                         if atom_num == None:
                             atom_num = i + 1
+
+                        # Increment the atom number if a TER record was 
created.
+                        if atom_record and atom_num == ter_num:
+                            count_shift = True
+                        if atom_record and count_shift:
+                            atom_num += 1
 
                         # Write out.
                         file.write("%-6s%5s %4s%1s%3s %1s%4s%1s   
%8.3f%8.3f%8.3f%6.2f%6.2f      %4s%2s%2s\n" % ('HETATM', atom_num, 
self._translate(mol.atom_name[i]), '', self._translate(mol.res_name[i]), 
self._translate(mol.chain_id[i]), self._translate(mol.res_num[i]), '', 
self._translate(mol.x[i], 'float'), self._translate(mol.y[i], 'float'), 
self._translate(mol.z[i], 'float'), 1.0, 0, self._translate(mol.seg_id[i]), 
self._translate(mol.element[i]), ''))




Related Messages


Powered by MHonArc, Updated Thu Nov 24 14:20:02 2011