mailr14944 - /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 October 31, 2011 - 11:27:
Author: bugman
Date: Mon Oct 31 11:27:08 2011
New Revision: 14944

URL: http://svn.gna.org/viewcvs/relax?rev=14944&view=rev
Log:
The internal structural reader can now create PDB files if atom numbers are 
missing.

This fixes the structure.write_pdb user function in certain edge cases.


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=14944&r1=14943&r2=14944&view=diff
==============================================================================
--- 1.3/generic_fns/structure/internal.py (original)
+++ 1.3/generic_fns/structure/internal.py Mon Oct 31 11:27:08 2011
@@ -1386,7 +1386,14 @@
                     # Write the ATOM record.
                     if mol.pdb_record[i] in [None, 'ATOM']:
                         atom_record = True
-                        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', mol.atom_num[i], 
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]), ''))
+
+                        # The atom number, if missing.
+                        atom_num = mol.atom_num[i]
+                        if atom_num == None:
+                            atom_num = i + 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" % ('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
 
                 # Finish the ATOM section with the TER record.
@@ -1398,7 +1405,13 @@
                 for i in xrange(len(mol.atom_name)):
                     # Write the HETATM record.
                     if mol.pdb_record[i] == 'HETATM':
-                        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', mol.atom_num[i], 
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]), ''))
+                        # The atom number, if missing.
+                        atom_num = mol.atom_num[i]
+                        if atom_num == None:
+                            atom_num = i + 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]), ''))
                         num_hetatm = num_hetatm + 1
 
 
@@ -1453,7 +1466,10 @@
                         # Convert the atom indices to atom numbers.
                         for k in range(4):
                             if bonded[k] != '':
-                                bonded[k] = mol.atom_num[bonded[k]]
+                                if mol.atom_num[bonded[k]] != None:
+                                    bonded[k] = mol.atom_num[bonded[k]]
+                                else:
+                                    bonded[k] = bonded[k] + 1
 
                         # Write the CONECT record.
                         file.write("%-6s%5s%5s%5s%5s%5s%5s%5s%5s%5s%5s%5s\n" 
% ('CONECT', i+1, bonded[0], bonded[1], bonded[2], bonded[3], '', '', '', '', 
'', ''))




Related Messages


Powered by MHonArc, Updated Mon Oct 31 12:00:02 2011