def parse_pw_xml_output(data, dir_with_bands=None):
"""
Parse the xml data of QE v5.0.x
Input data must be a single string, as returned by file.read()
Returns a dictionary with parsed values
"""
import copy
from xml.parsers.expat import ExpatError
# NOTE : I often assume that if the xml file has been written, it has no
# internal errors.
try:
dom = xml.dom.minidom.parseString(data)
except ExpatError:
return {'xml_warnings': "Error in XML parseString: bad format"}, {}, {}
parsed_data = {}
parsed_data['xml_warnings'] = []
structure_dict = {}
# CARD CELL
structure_dict, lattice_vectors, volume = copy.deepcopy(xml_card_cell(structure_dict, dom))
# CARD IONS
structure_dict = copy.deepcopy(xml_card_ions(structure_dict, dom, lattice_vectors, volume))
# fermi energy
cardname = 'BAND_STRUCTURE_INFO'
target_tags = read_xml_card(dom, cardname)
tagname = 'FERMI_ENERGY'
parsed_data[tagname.replace('-', '_').lower()] = \
parse_xml_child_float(tagname, target_tags) * hartree_to_ev
parsed_data[tagname.lower() + units_suffix] = default_energy_units
return parsed_data, structure_dict
basic_raw_parser_pw.py 文件源码
python
阅读 19
收藏 0
点赞 0
评论 0
评论列表
文章目录