Difference between revisions of "Extractedmin2pdb.py"

From CUC3
Jump to navigation Jump to search
import>Em427
import>Em427
Line 1: Line 1:
If you extracted minima from ''points.min'' file to ''extractedmin'' file you can use Python program presented below to convert this file into PDB one. Save the code in ''extractedmin2pdb.py'' file, next change privileges of this file:
+
If you extracted minima from ''points.min'' file and get ''extractedmin'' file you can use Python program presented below to convert this file into PDB one. Save the code in ''extractedmin2pdb.py'' file, next change privileges of this file:
   
 
chmod 777 extractedmin2pdb.py
 
chmod 777 extractedmin2pdb.py

Revision as of 16:13, 30 April 2008

If you extracted minima from points.min file and get extractedmin file you can use Python program presented below to convert this file into PDB one. Save the code in extractedmin2pdb.py file, next change privileges of this file:

chmod 777 extractedmin2pdb.py

and type:

./extractedmin2pdb.py


#!/usr/bin/env python

import sys
import string

###############################################################
##                                                            #
## Edyta Malolepsza                                           #
## David Wales' group, University of Cambridge                #
## in case of problems please send email: em427@cam.ac.uk     #
##                                                            #
###############################################################
##
## transform extractedmin into extractedmin.pdb
## ./extractedmin2pdb.py
##
###############################################################

prmtop = open("coords.prmtop").read()
f = string.split(prmtop, "\n")

q0 = f.index("%FLAG POINTERS                                                                  ")
q1 = f.index("%FLAG ATOM_NAME                                                                 ")
q2 = f.index("%FLAG RESIDUE_LABEL                                                             ")
q3 = f.index("%FLAG RESIDUE_POINTER                                                           ")

## names of tables are related to names in prmtop file

atomNumber = int(string.split(f[q0+2])[0])

atomName = []
residueLabel = []

an = 0
line = 0
while (an<atomNumber):
  for j in range(20):
    if (an<atomNumber):
      an = an+1
      atomName.append(f[q1+2+line][j*4:(j+1)*4].strip())
    else:
      break
  line = line+1

for i in range(q3-q2-2):
  for j in range((len(f[q2+2+i])+1)/4):
    residueLabel.append(string.strip(f[q2+2+i][j*4:4*(j+1)]))

info = open("extractedmin").read()
ff = string.split(info, "\n")

xyz = open('extractedmin.pdb','w')

for i in range(len(ff)/(atomNumber)):
    mm = 1
    for j in range(atomNumber):
        x = float(string.split(ff[atomNumber*i+j])[0])
        y = float(string.split(ff[atomNumber*i+j])[1])
        z = float(string.split(ff[atomNumber*i+j])[2])
        if (atomName[j]=='N' and atomName[j+1]=='H'):
            mm = mm+1
            xyz.write("%4s%7d %-4s %-4s%5d%12.3f%8.3f%8.3f\n" % ('ATOM', j+1, atomName[j], residueLabel[mm-1], mm, x, y, z))
        else:
            xyz.write("%4s%7d %-4s %-4s%5d%12.3f%8.3f%8.3f\n" % ('ATOM', j+1, atomName[j], residueLabel[mm-1], mm, x, y, z))

    xyz.write("END\n")

xyz.write("\n")
xyz.close()