NAMD Wiki: crd2pdb
#!/usr/bin/python # This script converts a CHARMm crd file to a PDB file. (This has been done # several times before - hopefully this is more successful :-) # # EPF 27-03-2000 # import sys,struct,os if len(sys.argv) < 2: print "usage: crd2pdb crd-file > pdb-file" os._exit(0) crdfile = sys.argv[1] f=open(crdfile) print 'REMARK Converted from '+crdfile buffer = f.readline() while buffer[0:1] == "*": buffer = f.readline() numofatoms = float(buffer) j = 0; while buffer != "": buffer = f.readline() if buffer != "": atomnr = int(buffer[0:5]) resnr = int(buffer[5:10]) residue = buffer[11:15] atom = buffer[16:20] x = float(buffer[20:30]) y = float(buffer[30:40]) z = float(buffer[40:50]) segment = buffer[51:55] reschain = buffer[56:63] bfactor = float(buffer[63:70]) if reschain[0:1].isalpha(): chain = reschain[0:1] else: chain = " " if resnr<10000: atomdata =(atomnr,atom,residue,chain,resnr,x,y,z,0.0,bfactor) pdbline = 'ATOM %5i %3s%4s%c%4i %8.3f%8.3f%8.3f%6.2f%6.2f' % atomdata else: atomdata =(atomnr,atom,residue,resnr,x,y,z,0.0,bfactor) pdbline = 'ATOM %5i %3s%4s%5i %8.3f%8.3f%8.3f%6.2f%6.2f' % atomdata print pdbline j += 1 print "REMARK There are "+str(j)+" atoms in this file" if j != numofatoms: print "REMARK Actual number of atoms does not match the number given in crd file ("+str(numofatoms)+")"