#! @PYTHON@ # # determines all points which are a given distance away from the boundary import sys, string, re, math wrerr = sys.stderr.write wrout = sys.stdout.write # check for parameters if len(sys.argv) < 3: wrerr("Usage: "+sys.argv[0]+" \n") sys.exit(1) #Get box boundaries (open parameter file) input = open(sys.argv[1], "r") distance = float(sys.argv[2]) CELLLENGTH=distance/4 filetype=sys.argv[1].split(".") if (filetype[-1]=="data"): while 1: line=input.readline() # skip header (starting with #) if not re.compile("^#").match(line): break elif (filetype[-1]=="xyz"): line=input.readline() line=input.readline() line=input.readline() atoms=line.split() max=[float(atoms[1]), float(atoms[2]), float(atoms[3])] min=[float(atoms[1]), float(atoms[2]), float(atoms[3])] for line in input: atom=line.split() for i in range(3): if float(atom[i+1]) < min[i]: min[i] = float(atom[i+1]) if float(atom[i+1]) > max[i]: max[i] = float(atom[i+1]) #print "Found Box bounds [%f,%f]x[%f,%f]x[%f,%f]." % (min[0],max[0],min[1],max[1],min[2],max[2]) input.close() # open files input = open(sys.argv[1], "r") # parse every atom n=0 line=input.readline() line=input.readline() for line in input: # atom=[] fields=line.split() x=float(fields[1]) # shift coordinates by box minimum y=float(fields[2]) z=float(fields[3]) if (x > (min[0]+distance)) and (x < (max[0]-distance)): if (y > (min[1]+distance)) and (y < (max[1]-distance)): if (z > (min[2]+distance)) and (z < (max[2]-distance)): print "%lg" % (n) n=n+1