Difference between revisions of "Extractedmin2pdb.py"

From CUC3
Jump to navigation Jump to search
import>Em427
 
import>Em427
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
Program useful for AMBER9 and NAB users
#!/usr/bin/env python
 
   
import sys
 
import string
 
   
  +
If you extracted minima from ''points.min'' file and you have ''extractedmin'' file you can use Python program presented below to convert this file to PDB format. Save the code in ''extractedmin2pdb.py'' file, change privileges of this file:
###############################################################
 
## #
 
## Edyta Malolepsza #
 
## David Wales' group, University of Cambridge #
 
## in case of problems please send email: em427@cam.ac.uk #
 
## #
 
###############################################################
 
##
 
## transform path.info into path_all.pdb
 
## ./path2pdb.py
 
##
 
###############################################################
 
   
  +
chmod 755 extractedmin2pdb.py
prmtop = open("coords.prmtop").read()
 
f = string.split(prmtop, "\n")
 
   
  +
and type:
q0 = f.index("%FLAG POINTERS ")
 
q1 = f.index("%FLAG ATOM_NAME ")
 
q2 = f.index("%FLAG RESIDUE_LABEL ")
 
q3 = f.index("%FLAG RESIDUE_POINTER ")
 
   
  +
./extractedmin2pdb.py
## 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
 
   
  +
#!/usr/bin/env python
for i in range(q3-q2-2):
 
  +
for j in range((len(f[q2+2+i])+1)/4):
 
  +
import sys
residueLabel.append(string.strip(f[q2+2+i][j*4:4*(j+1)]))
 
  +
import string
 
  +
info = open("extractedmin").read()
 
  +
###############################################################
ff = string.split(info, "\n")
 
  +
## #
 
  +
## Edyta Malolepsza #
xyz = open('points.min.pdb','w')
 
  +
## David Wales' group, University of Cambridge #
 
  +
## in case of problems please send email: em427@cam.ac.uk #
for i in range(len(ff)/(atomNumber)):
 
  +
## #
mm = 1
 
  +
###############################################################
for j in range(atomNumber):
 
  +
##
x = float(string.split(ff[atomNumber*i+j])[0])
 
  +
## transform extractedmin into extractedmin.pdb
y = float(string.split(ff[atomNumber*i+j])[1])
 
  +
## ./extractedmin2pdb.py
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))
 
  +
prmtop = open("coords.prmtop").read()
else:
 
  +
f = string.split(prmtop, "\n")
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))
 
  +
 
  +
q0 = f.index("%FLAG POINTERS ")
xyz.write("END\n")
 
  +
q1 = f.index("%FLAG ATOM_NAME ")
 
  +
q2 = f.index("%FLAG RESIDUE_LABEL ")
xyz.write("\n")
 
  +
q3 = f.index("%FLAG RESIDUE_POINTER ")
xyz.close()
 
  +
  +
## 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()

Latest revision as of 16:31, 30 April 2008

Program useful for AMBER9 and NAB users


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

chmod 755 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()