#!@PYTHON@ # # calculates xray spectra for each time step with coordinates from PDB import sys, os exec_prefix="@prefix@" DATABASE=exec_prefix+"/bin/elements.db" # contains atomic numbers XRAY="/media/WORK/tmp/CODICE/XR_Intensity" PYXPLOT="/home/heber/build/pyxplot/pyxplot" NAME="ettringite_6Gpa" # get command line parameters if (len(sys.argv)) < 5: print "Usage: "+sys.argv[0]+" [start from step]" sys.exit(1) else: dir=sys.argv[1] prefix=sys.argv[2] offsetElement=int(sys.argv[3]) offsetXYZ=int(sys.argv[4]) # generate hash map: element -> atomic number atomic={} input = open(DATABASE,"r") for line in input: if "#" in line: continue entries=line.split() element=entries[1].upper() number=int(entries[5]) print "Putting "+element+" -> "+str(number)+" into hash map." atomic[element]=number input.close() # parse each PDB if (len(sys.argv))>=5: step=int(sys.argv[5]) else: step=0 file=dir+"/"+prefix+("%04d" % (step))+".pdb" while 1: try: input=open(file, "r") except IOError: print file+" is not found, breaking." break print "Current step is "+str(step)+"." # recode pdb to "Symbol atomicnumber X Y Z" structure output = open(NAME,"w") n=0 for line in input: if "#" in line or "CONECT" in line or "MASTER" in line or "AUTHOR" in line or "COMPND" in line: continue if "END" in line: break entries=line.split() try: element=entries[offsetElement] except IndexError: print "Could not read element nr."+str(offsetElement)+" in line: "+line+"." continue number=atomic.get(element.upper(), None) if number != None: output.write("%s\t%d\t%s\t%s\t%s\n" % (element, int(number), entries[offsetXYZ], entries[offsetXYZ+1], entries[offsetXYZ+2])) n=n+1 else: print "WARNING: atomic number for element "+element+" is not known." output.close() # call Xray outputname=dir+"/xray_intensity"+("%04d" % (step)) os.system(XRAY+' '+str(n)+' >'+outputname+'.csv') # make plotfile and move eps into place os.system('/bin/cp -f '+outputname+'.csv C3S_xray_spectrum.csv') os.system(PYXPLOT+' xray_spectrum.pyx') os.system('/bin/mv C3S_xray_spectrum.eps '+outputname+'.eps') # next file step+=1 file=dir+"/"+prefix+("%04d" % (step))+".pdb" sys.exit(1)