diff --git a/parser/parser-vasp/parser_vasp.py b/parser/parser-vasp/parser_vasp.py index 1a2a202e4b40623c3a568f2a191784700a9cacbd..d9581e3c8f33f3884146c8a68af2acf4b8688ff6 100644 --- a/parser/parser-vasp/parser_vasp.py +++ b/parser/parser-vasp/parser_vasp.py @@ -1,3 +1,4 @@ +from builtins import object import setup_paths from nomadcore.simple_parser import mainFunction, SimpleMatcher as SM from nomadcore.local_meta_info import loadJsonFile, InfoKindEl diff --git a/parser/parser-vasp/parser_vasprun.py b/parser/parser-vasp/parser_vasprun.py index bcd93ece43e6b1f6189d827432d23cfcef6a6cf5..8d19e9863b5b7aea315420cc985497d2fcef6302 100644 --- a/parser/parser-vasp/parser_vasprun.py +++ b/parser/parser-vasp/parser_vasprun.py @@ -1,3 +1,7 @@ +from __future__ import division +from builtins import map +from builtins import range +from builtins import object import xml.etree.ElementTree import logging, sys import setup_paths @@ -60,7 +64,7 @@ class MyXMLParser(ET.XMLParser): def getVector(el, transform = float, field = "v"): """ returns the vasp style vector contained in the element el (using field v). single elements are converted using the function convert""" - return map(lambda x: map(transform, re.split(r"\s+", x.text.strip())), el.findall(field)) + return [[transform(y) for y in re.split(r"\s+", x.text.strip())] for x in el.findall(field)] class VasprunContext(object): def __init__(self): @@ -135,7 +139,7 @@ class VasprunContext(object): backend.pwarn("could not find converter for dtypeStr %s when handling meta info %s" % (dtypeStr, )) elif shape: vals = re.split("\s+", el.text.strip()) - backend.addValue(meta["name"], map(converter, vals)) + backend.addValue(meta["name"], [converter(x) for x in vals]) else: backend.addValue(meta["name"], converter(el.text)) if name == 'GGA': @@ -197,7 +201,7 @@ class VasprunContext(object): def onEnd_structure(self, parser, event, element): backend = parser.backend - gIndexes = parser.tagSections["/".join(map(lambda x: x.tag, parser.path[:])) + "/" + element.tag] + gIndexes = parser.tagSections["/".join([x.tag for x in parser.path[:]]) + "/" + element.tag] self.lastSystemDescription = gIndexes["section_system"] for el in element: if (el.tag == "crystal"): @@ -266,11 +270,11 @@ class VasprunContext(object): else: backend.pwarn("unexpected tag %s in array of the eigenvalues" % arrEl.tag) if eigenvalues is not None: - ev = map(eConv, eigenvalues) + ev = [eConv(x) for x in eigenvalues] if self.bands: divisions = int(self.bands['divisions']) backend.openNonOverlappingSection("section_k_band") - nsegments = self.kpoints.shape[0]/divisions + nsegments = self.kpoints.shape[0] // divisions kpt = np.reshape(self.kpoints, (nsegments, divisions, 3)) energies = np.reshape(ev, (self.ispin, nsegments, divisions , bands.shape[0])) occ = np.reshape(occupation, (self.ispin, nsegments, divisions, bands.shape[0])) @@ -421,7 +425,7 @@ class VasprunContext(object): backend.pwarn("could not find converter for dtypeStr %s when handling meta info %s" % (dtypeStr, )) elif shape: vals = re.split("\s+", el.text.strip()) - backend.addValue(meta["name"], map(converter, vals)) + backend.addValue(meta["name"], [converter(x) for x in vals]) else: backend.addValue(meta["name"], converter(el.text)) if name == 'GGA': @@ -513,7 +517,7 @@ class XmlParser(object): if event == 'start': sectionsToOpen = self.sectionMap.get(el.tag, None) if sectionsToOpen: - pathStr = "/".join(map(lambda x: x.tag, self.path)) + "/" + el.tag + pathStr = "/".join([x.tag for x in self.path]) + "/" + el.tag gIndexes = {} for sect in sectionsToOpen: gIndexes[sect] = backend.openSection(sect) @@ -539,7 +543,7 @@ class XmlParser(object): self.path[-1].remove(el) sectionsToClose = self.sectionMap.get(tag, None) if sectionsToClose: - pathStr = "/".join(map(lambda x: x.tag, self.path)) + "/" + tag + pathStr = "/".join([x.tag for x in self.path]) + "/" + tag gIndexes = self.tagSections[pathStr] del self.tagSections[pathStr] for sect in reversed(sectionsToClose):