Source code for schrodinger.application.matsci.qeschema.utils

"""
Convert from XML input to Fortran input.
"""

from schrodinger.application.matsci.qeschema import qeschema

import os
import xml.etree.ElementTree as Etree

NORUN_WARNING = """!   === WARNING ===
!   This file is not used by periodic_dft_driver.py or <jobname>.sh
!   If you want to run this file, use runner.py
!   ======
"""


[docs]def xml2in(input_fn, warning=False): tree = Etree.parse(input_fn) root = tree.getroot() element_name = root.tag.split('}')[-1] if element_name == 'espresso': xml_document = qeschema.PwDocument() elif element_name == 'nebRun': xml_document = qeschema.NebDocument() elif element_name == 'espressoph': xml_document = qeschema.PhononDocument() elif element_name == 'tddfpt': xml_document = qeschema.TdDocument() elif element_name == 'spectrumDoc': xml_document = qeschema.TdSpectrumDocument() else: raise ValueError("Could not find correct XML in %s, exiting...\n" % input_fn) root = None tree = None xml_document.read(input_fn) qe_in = xml_document.get_fortran_input() input_fn_name, input_fn_ext = os.path.splitext(input_fn) outfile = input_fn_name + '.in' with open(outfile, mode='w') as f: if warning: f.write(NORUN_WARNING) f.write(qe_in) return outfile