code: def _magic_parser(stream, magic):
      
      #Example (SCF cycle, similar format is used for phonons):
      #
      #  iter   Etot(hartree)      deltaE(h)  residm     vres2
      #  ETOT  1  -8.8604027880849    -8.860E+00 2.458E-02 3.748E+00
  
      #  At SCF step    5       vres2   =  3.53E-08 < tolvrs=  1.00E-06 =>converged.
      in_doc, fields = 0, None
  
      for line in stream:
          line = line.strip()
  
          if line.startswith(magic):
              keys = line.split()
              fields = OrderedDict((k, []) for k in keys)
  
          if fields is not None:
              #print(line)
              in_doc += 1
              if in_doc == 1:
                  continue
  
              # End of the section.
              if not line: break
  
              tokens = list(map(float, line.split()[1:]))
              assert len(tokens) == len(keys)
              for l, v in zip(fields.values(), tokens):
                  l.append(v)
  
      # Convert values to numpy arrays.
      if fields:
          return OrderedDict([(k, np.array(v)) for k, v in fields.items()])
      else:
          return None
docs: Parse the section with the SCF cycle
  
      Returns:
          dict where the key are the name of columns and
          the values are list of numbers. Note if no section was found.
  
      .. warning::
  
          The parser is very fragile and should be replaced by YAML.