1 | #!@PYTHON@
|
---|
2 | #
|
---|
3 | # This code calculates the pair correlation between the water molecules and the non-convex surface of the cluster (i.e. the boundary defined by the Si and Ca atoms)
|
---|
4 |
|
---|
5 | import sys, string, re, math, os
|
---|
6 | wrerr = sys.stderr.write
|
---|
7 | wrout = sys.stdout.write
|
---|
8 |
|
---|
9 | if (len(sys.argv) < 4):
|
---|
10 | print "Usage: "+sys.argv[0]+" <xyz> <dbond> <dat>"
|
---|
11 | sys.exit(1)
|
---|
12 |
|
---|
13 | # parse the pdb file and obtain maxid
|
---|
14 | print "Parsing the XYZ file "+sys.argv[1]+"."
|
---|
15 | xyzfile = open(sys.argv[1], "r")
|
---|
16 | atoms = {}
|
---|
17 | id=1
|
---|
18 | xyzfile.readline()
|
---|
19 | xyzfile.readline()
|
---|
20 | emptyline=re.compile('[ \t]*\n')
|
---|
21 | for line in xyzfile:
|
---|
22 | #if "END" in line or "CONECT" in line or "MASTER" in line:
|
---|
23 | if emptyline.match(line):
|
---|
24 | continue
|
---|
25 | fields = line.split()
|
---|
26 | # id, element, x, y, z and ten neighbour ids
|
---|
27 | atoms[str(id)] = [id, fields[0], float(fields[1]), float(fields[2]), float(fields[3]), -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
|
---|
28 | id+=1
|
---|
29 | print "The biggest Id is %d" % (id)
|
---|
30 | xyzfile.close()
|
---|
31 |
|
---|
32 | # Parsing the dbond file
|
---|
33 | print "Parsing the DBOND file "+sys.argv[2]+"."
|
---|
34 | dbondfile = open(sys.argv[2], "r")
|
---|
35 | test = dbondfile.readline() # skip the first two lines
|
---|
36 | test = dbondfile.readline()
|
---|
37 | for line in dbondfile:
|
---|
38 | fields = line.split()
|
---|
39 | ids = [int(fields[0]), int(fields[1])]
|
---|
40 | set = [0,0]
|
---|
41 | if str(ids[0]) in atoms and str(ids[1]) in atoms:
|
---|
42 | for i in range(5,15):
|
---|
43 | for j in range(2):
|
---|
44 | if set[j] == 0 and (atoms[ str(ids[j]) ])[i] == -1:
|
---|
45 | (atoms[ str(ids[j]) ])[i] = ids [ (j+1) %2 ]
|
---|
46 | set[j] = 1
|
---|
47 | if set[0] == 1 and set[1] == 1:
|
---|
48 | break
|
---|
49 | if set[0] == 0 or set[1] == 0:
|
---|
50 | print "ERROR: Either id already had ten neighbours, increase number in code!"
|
---|
51 | sys.exit(1)
|
---|
52 | else:
|
---|
53 | print "ERROR: Either %d or %d are not listed in the PDB file!" % (ids[0], ids[1])
|
---|
54 | sys.exit(1)
|
---|
55 |
|
---|
56 | # parse the tecplot dat file (the first three lines are tecplot INFO)
|
---|
57 | datfile=open(sys.argv[3], "r")
|
---|
58 | line=datfile.readline()
|
---|
59 | line=datfile.readline()
|
---|
60 | line=datfile.readline()
|
---|
61 | points=[]
|
---|
62 | pcounter=0
|
---|
63 | for line in datfile:
|
---|
64 | if not line.strip(): # end on first empty line, indicating end of points and beginning of triangles
|
---|
65 | break
|
---|
66 | else:
|
---|
67 | fields=line.split()
|
---|
68 | points.append([pcounter, float(fields[0]), float(fields[1]), float(fields[2])])
|
---|
69 | pcounter=pcounter+1
|
---|
70 | print "There are %d endpoints of triangles." % (pcounter)
|
---|
71 |
|
---|
72 | tcounter=0
|
---|
73 | triangles=[]
|
---|
74 | for line in datfile:
|
---|
75 | fields=line.split()
|
---|
76 | triangles.append([tcounter, int(fields[0]), int(fields[1]), int(fields[2])])
|
---|
77 | corners=[points[ int(fields[0])-1 ], points[ int(fields[1])-1 ], points[ int(fields[2])-1 ]]
|
---|
78 | # calculate middle point and add to points
|
---|
79 | centroid=[0.,0.,0.]
|
---|
80 | for i in range(3):
|
---|
81 | for j in range(3):
|
---|
82 | centroid[j] += corners[i][1+j]
|
---|
83 | for i in range(3):
|
---|
84 | centroid[i] = centroid[i]/3.
|
---|
85 | points.append([pcounter+tcounter, centroid[0], centroid[1], centroid[2]])
|
---|
86 | #print ("Centroid is at (%g,%g,%g) for triangle at (%g,%g,%g), (%g,%g,%g), (%g,%g,%g)." % (centroid[0], centroid[1], centroid[2], corners[0][1],corners[0][2],corners[0][3], corners[1][1],corners[1][2],corners[1][3], corners[2][1],corners[2][2],corners[2][3]))
|
---|
87 |
|
---|
88 | tcounter=tcounter+1
|
---|
89 | print "There are %d triangles." % (tcounter)
|
---|
90 |
|
---|
91 | # go through all Si and Ca and calculate CoG
|
---|
92 | CoG = [ 0, 0, 0]
|
---|
93 | key=atoms.keys()[0]
|
---|
94 | max=[atoms[key][2],atoms[key][3],atoms[key][4]]
|
---|
95 | min=[atoms[key][2],atoms[key][3],atoms[key][4]]
|
---|
96 | nr=0
|
---|
97 | for atom in atoms:
|
---|
98 | #print atoms[atom]
|
---|
99 | if "Si" in atoms[atom][1] or "Ca" in atoms[atom][1]:
|
---|
100 | for i in range(3):
|
---|
101 | CoG[i] += atoms[atom][2+i]
|
---|
102 | nr = nr + 1
|
---|
103 | for i in range(3):
|
---|
104 | if min[i] > atoms[atom][2+i]:
|
---|
105 | min[i] = atoms[atom][2+i]
|
---|
106 | if max[i] < atoms[atom][2+i]:
|
---|
107 | max[i] = atoms[atom][2+i]
|
---|
108 | for i in range(3):
|
---|
109 | CoG[i] /= nr
|
---|
110 | print "The Center of Gravity is at %g,%g,%g." % (CoG[0], CoG[1], CoG[2])
|
---|
111 | print "Bounds of the cluster's atoms are [%f,%f,], [%f,%f], [%f,%f]." % (min[0],max[0], min[1],max[1], min[2],max[2])
|
---|
112 |
|
---|
113 | # check bounds against bounds of cluster
|
---|
114 | max=[points[0][1],points[0][2],points[0][3]]
|
---|
115 | min=[points[0][1],points[0][2],points[0][3]]
|
---|
116 | for j in range(len(points)):
|
---|
117 | for i in range(3):
|
---|
118 | if min[i] > points[j][1+i]:
|
---|
119 | min[i] = points[j][1+i]
|
---|
120 | if max[i] < points[j][1+i]:
|
---|
121 | max[i] = points[j][1+i]
|
---|
122 | print "Bounds of the cluster's tesselated surface are [%f,%f,], [%f,%f], [%f,%f]." % (min[0],max[0], min[1],max[1], min[2],max[2])
|
---|
123 |
|
---|
124 | # find radius of cluster
|
---|
125 | bounds=[0.,0.,0.]
|
---|
126 | maximum=0
|
---|
127 | maxid=-1
|
---|
128 | for i in range(3):
|
---|
129 | bounds[i] = max[i] - min[i]
|
---|
130 | if maximum < bounds[i]:
|
---|
131 | maxid=i
|
---|
132 | maximum = bounds[i]
|
---|
133 | print "Cylinder direction is probably "+str(maxid)+"."
|
---|
134 | R=(bounds[(maxid+1)%3]+bounds[(maxid+2)%3])/4.
|
---|
135 |
|
---|
136 | # search atom closest to CoG to allow visual check
|
---|
137 | mindist=1e+16
|
---|
138 | minid=-1
|
---|
139 | for atom in atoms:
|
---|
140 | dist=0
|
---|
141 | for i in range(3):
|
---|
142 | temp = CoG[i] - atoms[atom][2+i]
|
---|
143 | dist += temp*temp
|
---|
144 | if dist < mindist:
|
---|
145 | mindist = dist
|
---|
146 | minid = atom
|
---|
147 | print "The atom closest to CoG is %d, element %s (%f,%f,%f) with distance %f." % (atoms[minid][0], atoms[minid][1], atoms[minid][2], atoms[minid][3], atoms[minid][4], math.sqrt(mindist))
|
---|
148 |
|
---|
149 | # initialize the bin array
|
---|
150 | NrBins=100
|
---|
151 | BinWidth=0.5
|
---|
152 | bins = []
|
---|
153 | for i in range(2*NrBins+1):
|
---|
154 | bins.append(0)
|
---|
155 |
|
---|
156 | # get path
|
---|
157 | line=sys.argv[1].rpartition('/')
|
---|
158 | path=line[0]+line[1]
|
---|
159 | print "Path is "+path+"."
|
---|
160 |
|
---|
161 | # open a number of xyz files
|
---|
162 | innerwaterfile=open(path+"innerwater","w")
|
---|
163 | outerwaterfile=open(path+"outerwater","w")
|
---|
164 | hyperdryclusterfile=open(path+"hyperdrycluster","w")
|
---|
165 | dryclusterfile=open(path+"drycluster","w")
|
---|
166 | waterdryclusterfile=open(path+"waterdrycluster","w")
|
---|
167 | layerclusterfile=open(path+"layercluster","w")
|
---|
168 | outerwaterfile=open(path+"outerwater","w")
|
---|
169 | nrcluster=0
|
---|
170 | for atom in atoms:
|
---|
171 | if "Si" in atoms[atom][1] or "Ca" in atoms[atom][1]:
|
---|
172 | #innerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
173 | #outerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
174 | hyperdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
175 | dryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
176 | waterdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
177 | layerclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
178 | nrcluster+=1
|
---|
179 | nohyperdry=nrcluster
|
---|
180 | nodry=nrcluster
|
---|
181 | nowaterdry=nrcluster
|
---|
182 | nolayer=nrcluster
|
---|
183 |
|
---|
184 | # go through every atom
|
---|
185 | elements=["H", "O"]
|
---|
186 | nrwaters = 0
|
---|
187 | nrothers = 0
|
---|
188 | inner=0
|
---|
189 | outer=0
|
---|
190 | for element in elements:
|
---|
191 | print "Calculating for element "+element+"."
|
---|
192 | for i in range(2*NrBins+1):
|
---|
193 | bins[i] = 0.
|
---|
194 | for atom in atoms:
|
---|
195 | if element in atoms[atom][1]:
|
---|
196 | water = 1
|
---|
197 | # check whether its really water (i.e. not bound to Si)
|
---|
198 | for i in range(5,15):
|
---|
199 | if atoms[atom][i] == -1:
|
---|
200 | break
|
---|
201 | if str(atoms[atom][i]) in atoms:
|
---|
202 | if "Si" in atoms[ str(atoms[atom][i]) ][1] or "Ca" in atoms[ str(atoms[atom][i]) ][1]:
|
---|
203 | water = 0
|
---|
204 | break
|
---|
205 | else:
|
---|
206 | print "ERROR: key %d is not in list!" % (atoms[atom][i])
|
---|
207 | sys.exit(1)
|
---|
208 | # if it's water find closest boundary point and check whether atom is in- or outside of cluster
|
---|
209 | if water == 1:
|
---|
210 | mindist=1e+16
|
---|
211 | vector=[0.,0.,0.]
|
---|
212 | vector2=[0.,0.,0.]
|
---|
213 | minptr=points[0]
|
---|
214 | for ptr in points:
|
---|
215 | dist = 0
|
---|
216 | for i in range(3):
|
---|
217 | vector[i] = ptr[1+i] - atoms[atom][2+i]
|
---|
218 | dist += (vector[i])*(vector[i])
|
---|
219 | if dist < mindist:
|
---|
220 | minptr=ptr
|
---|
221 | mindist = dist
|
---|
222 | sign=1
|
---|
223 | skp=0
|
---|
224 | diff=0
|
---|
225 | for i in range(3):
|
---|
226 | vector2[i] = CoG[i] - atoms[atom][2+i]
|
---|
227 | skp += vector[i]*vector2[i]
|
---|
228 | diff += vector2[i]*vector2[i]
|
---|
229 | if (skp < 0) or (diff < dist):
|
---|
230 | sign=-1
|
---|
231 | mindist = int(math.sqrt(mindist)/BinWidth)
|
---|
232 | if mindist < NrBins:
|
---|
233 | #if mindist < 8 and abs(sign) == 1:
|
---|
234 | #for i in range(3):
|
---|
235 | #vector[i] = minptr[1+i] - atoms[atom][2+i]
|
---|
236 | #vector2[i] = CoG[i] - atoms[atom][2+i]
|
---|
237 | #print "For atom %d vector to boundary is (%f,%f,%f) and vector to CoG (%f,%f,%f)." % (atoms[atom][0], vector[0], vector[1], vector[2], vector2[0], vector2[1], vector2[2])
|
---|
238 | #print "atom %d vector is (%f,%f,%f) and boundary point vector is (%f,%f,%f)." % (atoms[atom][0], atoms[atom][2], atoms[atom][3], atoms[atom][4],minptr[1], minptr[2], minptr[3])
|
---|
239 | #print "Atom %d goes into bin %d." % (atoms[atom][0], mindist)
|
---|
240 | if sign == -1:
|
---|
241 | bins[NrBins-mindist] = bins[NrBins-mindist] + 1
|
---|
242 | innerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
243 | dryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
244 | waterdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
245 | layerclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
246 | nodry += 1
|
---|
247 | nowaterdry += 1
|
---|
248 | nolayer += 1
|
---|
249 | inner += 1
|
---|
250 | else:
|
---|
251 | bins[NrBins+mindist] = bins[NrBins+mindist] + 1
|
---|
252 | outerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
253 | if mindist < 8:
|
---|
254 | waterdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
255 | nowaterdry += 1
|
---|
256 | if mindist < 11:
|
---|
257 | layerclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
258 | nolayer += 1
|
---|
259 | outer += 1
|
---|
260 | nrwaters = nrwaters+1
|
---|
261 | else:
|
---|
262 | print "NOTE: Have to throw "+str(atoms[atom][0])+" away, as it would be put into Bin "+str(mindist)+" which is out of range 0,"+str(NrBins-1)+"."
|
---|
263 | else:
|
---|
264 | if element == elements[1]:
|
---|
265 | nrothers = nrothers + 1
|
---|
266 | nrcluster = nrcluster + 1
|
---|
267 | #innerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
268 | #outerwaterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
269 | dryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
270 | hyperdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
271 | waterdryclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
272 | layerclusterfile.write("%s\t%f\t%f\t%f\n" % (atoms[atom][1], atoms[atom][2], atoms[atom][3], atoms[atom][4]))
|
---|
273 | nodry += 1
|
---|
274 | nohyperdry += 1
|
---|
275 | nowaterdry += 1
|
---|
276 | nolayer += 1
|
---|
277 |
|
---|
278 | #print "The Bins are as follows:"
|
---|
279 | output = open(path+"histo_pair_correlation_"+element+".dat", "w")
|
---|
280 | output.write("#Distance [A]\tnumber in bin\n")
|
---|
281 | for i in range(NrBins):
|
---|
282 | #print "%g\t%d" % (i*BinWidth, bins[i])
|
---|
283 | output.write("%g\t%d\n" % (-(NrBins-i)*BinWidth, bins[i]))
|
---|
284 | for i in range(NrBins,2*NrBins):
|
---|
285 | #print "%g\t%d" % (i*BinWidth, bins[i])
|
---|
286 | output.write("%g\t%d\n" % ((i-NrBins)*BinWidth, bins[i]))
|
---|
287 | output.close()
|
---|
288 |
|
---|
289 |
|
---|
290 | # calculate numerically the bins for homogeneous water distribution where we assume the cluster to be a cylinder (hence, just 2d and circle)
|
---|
291 | # centered in the box of length 44 with a certain radius R
|
---|
292 | a=22.0 # 44/2
|
---|
293 | N=2200
|
---|
294 | lastarea=0
|
---|
295 | waterdensity=0.033456344 # (1g/18amu)/cm^3 -> 1/angstrom^3, i.e. number of hydrogen particles in Angstroem^3 volume
|
---|
296 | if "H" in element:
|
---|
297 | waterdensity = waterdensity*2
|
---|
298 | output=open(path+"homogeneous_water_histo_"+element+".dat","w")
|
---|
299 | for i in range(1,2*NrBins):
|
---|
300 | area=0
|
---|
301 | radius = float(i)*BinWidth
|
---|
302 | h=(a)/float(N)
|
---|
303 | for j in range(N):
|
---|
304 | x = j*h
|
---|
305 | if x < a and x < radius:
|
---|
306 | y = (radius)*(radius) - x*x
|
---|
307 | if y > a*a:
|
---|
308 | y=a*a
|
---|
309 | dx = h
|
---|
310 | if (x+dx > a):
|
---|
311 | dx -= a-x
|
---|
312 | if (x+dx > radius):
|
---|
313 | dx -= radius-x
|
---|
314 | if (dx < 0):
|
---|
315 | print "ERROR: dx is "+str(dx)+"."
|
---|
316 | area += dx * math.sqrt(y)
|
---|
317 | #print ("Area for radius %g is %g." % (radius, area-lastarea))
|
---|
318 | volume = int((2.*a) * 4.* (area - lastarea) * waterdensity) # 2a is length of cylinder, 4* due to only looking at a quadrant
|
---|
319 | lastarea = area
|
---|
320 | if radius <= R:
|
---|
321 | volume = 0
|
---|
322 | output.write("%g\t%d\n" % ((i*BinWidth)-R, volume))
|
---|
323 | output.close()
|
---|
324 |
|
---|
325 | print "There were "+str(nrwaters)+" hydrogen and oxygen atoms and "+str(nrothers)+" connected to silica."
|
---|
326 | print "There were "+str(inner)+" inner and "+str(outer)+" outer hydrogen and oxygen atoms."
|
---|
327 |
|
---|
328 | innerwaterfile.close()
|
---|
329 | outerwaterfile.close()
|
---|
330 | hyperdryclusterfile.close()
|
---|
331 | dryclusterfile.close()
|
---|
332 | waterdryclusterfile.close()
|
---|
333 | layerclusterfile.close()
|
---|
334 |
|
---|
335 | # put number of atoms in front
|
---|
336 | innerwaterfile=open(path+"innerwater.xyz","w")
|
---|
337 | innerwaterfileold=open(path+"innerwater","r")
|
---|
338 | innerwaterfile.write(str(inner)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
339 | for line in innerwaterfileold:
|
---|
340 | innerwaterfile.write(line)
|
---|
341 | innerwaterfile.close()
|
---|
342 | innerwaterfileold.close()
|
---|
343 | os.remove(path+"innerwater")
|
---|
344 |
|
---|
345 | outerwaterfile=open(path+"outerwater.xyz","w")
|
---|
346 | outerwaterfileold=open(path+"outerwater","r")
|
---|
347 | outerwaterfile.write(str(outer)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
348 | for line in outerwaterfileold:
|
---|
349 | outerwaterfile.write(line)
|
---|
350 | outerwaterfile.close()
|
---|
351 | outerwaterfileold.close()
|
---|
352 | os.remove(path+"outerwater")
|
---|
353 |
|
---|
354 | hyperdryclusterfile=open(path+"hyperdrycluster.xyz","w")
|
---|
355 | hyperdryclusterfileold=open(path+"hyperdrycluster","r")
|
---|
356 | hyperdryclusterfile.write(str(nohyperdry)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
357 | for line in hyperdryclusterfileold:
|
---|
358 | hyperdryclusterfile.write(line)
|
---|
359 | hyperdryclusterfile.close()
|
---|
360 | hyperdryclusterfileold.close()
|
---|
361 | os.remove(path+"hyperdrycluster")
|
---|
362 |
|
---|
363 | dryclusterfile=open(path+"drycluster.xyz","w")
|
---|
364 | dryclusterfileold=open(path+"drycluster","r")
|
---|
365 | dryclusterfile.write(str(nodry)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
366 | for line in dryclusterfileold:
|
---|
367 | dryclusterfile.write(line)
|
---|
368 | dryclusterfile.close()
|
---|
369 | dryclusterfileold.close()
|
---|
370 | os.remove(path+"drycluster")
|
---|
371 |
|
---|
372 | waterdryclusterfile=open(path+"waterdrycluster.xyz","w")
|
---|
373 | waterdryclusterfileold=open(path+"waterdrycluster","r")
|
---|
374 | waterdryclusterfile.write(str(nowaterdry)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
375 | for line in waterdryclusterfileold:
|
---|
376 | waterdryclusterfile.write(line)
|
---|
377 | waterdryclusterfile.close()
|
---|
378 | waterdryclusterfileold.close()
|
---|
379 | os.remove(path+"waterdrycluster")
|
---|
380 |
|
---|
381 | layerclusterfile=open(path+"layercluster.xyz","w")
|
---|
382 | layerclusterfileold=open(path+"layercluster","r")
|
---|
383 | layerclusterfile.write(str(nolayer)+"\n\tCreated by "+sys.argv[0]+"\n")
|
---|
384 | for line in layerclusterfileold:
|
---|
385 | layerclusterfile.write(line)
|
---|
386 | layerclusterfile.close()
|
---|
387 | layerclusterfileold.close()
|
---|
388 | os.remove(path+"layercluster")
|
---|
389 |
|
---|
390 | print "finished."
|
---|