Nice termination

From Wiki
Revision as of 13:10, 10 June 2016 by Damien (talk | contribs) (New page: #Create the array 'vasp' with all the lines of vasprun.xml file with open("vasprun.xml") as vaspfile: vasp = vaspfile.readlines() #Find last finished step and first line of this step...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  1. Create the array 'vasp' with all the lines of vasprun.xml file

with open("vasprun.xml") as vaspfile:

   vasp = vaspfile.readlines()
  1. Find last finished step and first line of this step

n = 0 last_step = 0 last_line = 0 for v in vasp:

   if v == ' <calculation>\n':
       last_step += 1

while n < last_step - 1:

   if vasp[last_line] == ' <calculation>\n':
       n += 1
       last_line += 1
   else:
       last_line += 1
  1. Find the <structure> within the last finished step

k = last_line - 1 while k < len(vasp):

   if vasp[k] == '  <structure>\n':
       begin_struct = k
       k += 1
   elif vasp[k] == '  </structure>\n':
       end_struct = k
       k += 1
   else:
       k += 1        
  1. Increase the level of <structure> to an equivalent of <calculation>

for k in range(begin_struct, end_struct + 1):

   line = list(vasp[k])
   del line[0]
   vasp[k] = .join(line)    
  1. Write the result in the vasprun file
  2. 1 Write the first unchanged lines

vaspnew = open("vasprun.xml-new","w+") for k in range(last_line - 1):

   vaspnew.write(vasp[k])
  1. 1 Write the final structure

vaspnew.write(' <structure name="finalpos" >')

for k in range(begin_struct + 1, end_struct + 1):

   vaspnew.write(vasp[k])

vaspnew.write('</modeling>') vaspnew.close()