diff --git a/parser/parser-exciting/exciting_parser_bandstructure.py b/parser/parser-exciting/exciting_parser_bandstructure.py index 03279dc54b875c347feda9741ff6e68b28f7eb96..e751075a128f331062efc0592da257af9f90b165 100644 --- a/parser/parser-exciting/exciting_parser_bandstructure.py +++ b/parser/parser-exciting/exciting_parser_bandstructure.py @@ -14,9 +14,9 @@ class BandHandler(xml.sax.handler.ContentHandler): if name == "bandstructure": self.bandSectionGIndex = self.backend.openSection("x_exciting_section_bandstructure") self.inBand = True - elif name == "point" and self.inBand: - self.backend.addValue("x_exciting_band_value",float(attrs.getValue('eval'))) - self.backend.addValue("x_exciting_band_k",float(attrs.getValue('distance'))) + # elif name == "point" and self.inBand: + # self.backend.addValue("x_exciting_band_value",float(attrs.getValue('eval'))) + # self.backend.addValue("x_exciting_band_k",float(attrs.getValue('distance'))) # attrDict={} # for name in attrs.getNames(): # attrDict[name] = attrs.getValue(name) diff --git a/parser/parser-exciting/parser_exciting.py b/parser/parser-exciting/parser_exciting.py index a81beee75a4d7649512c9c58273ee02e4c9050ea..cef4f48b58cc65321cf70149f8fb15c393fc741c 100644 --- a/parser/parser-exciting/parser_exciting.py +++ b/parser/parser-exciting/parser_exciting.py @@ -5,6 +5,7 @@ from nomadcore.simple_parser import SimpleMatcher as SM, mainFunction from nomadcore.local_meta_info import loadJsonFile, InfoKindEl from nomadcore.caching_backend import CachingLevel from nomadcore.unit_conversion import unit_conversion +from nomadcore.local_backend import LocalBackend import os, sys, json, exciting_parser_dos,exciting_parser_bandstructure, exciting_parser_input class ExcitingParserContext(object): @@ -18,19 +19,19 @@ class ExcitingParserContext(object): latticeX = section["x_exciting_geometry_lattice_vector_x"] latticeY = section["x_exciting_geometry_lattice_vector_y"] latticeZ = section["x_exciting_geometry_lattice_vector_z"] - cell = [[latticeX[0],latticeY[0],latticeZ[0]], + cell = np.array([[latticeX[0],latticeY[0],latticeZ[0]], [latticeX[1],latticeY[1],latticeZ[1]], - [latticeX[2],latticeY[2],latticeZ[2]]] - backend.addValue("simulation_cell", cell) + [latticeX[2],latticeY[2],latticeZ[2]]]) + backend.addArrayValues("simulation_cell", cell) def onClose_x_exciting_section_reciprocal_lattice_vectors(self, backend, gIndex, section): recLatticeX = section["x_exciting_geometry_reciprocal_lattice_vector_x"] recLatticeY = section["x_exciting_geometry_reciprocal_lattice_vector_y"] recLatticeZ = section["x_exciting_geometry_reciprocal_lattice_vector_z"] - recCell = [[recLatticeX[0],recLatticeY[0],recLatticeZ[0]], + recCell = np.array([[recLatticeX[0],recLatticeY[0],recLatticeZ[0]], [recLatticeX[1],recLatticeY[1],recLatticeZ[1]], - [recLatticeX[2],recLatticeY[2],recLatticeZ[2]]] - backend.addValue("x_exciting_simulation_reciprocal_cell", recCell) + [recLatticeX[2],recLatticeY[2],recLatticeZ[2]]]) + backend.addArrayValues("x_exciting_simulation_reciprocal_cell", recCell) def onClose_x_exciting_section_xc(self, backend, gIndex, section): xcNr = section["x_exciting_xc_functional"][0] @@ -153,7 +154,7 @@ class ExcitingParserContext(object): else: values[-1].append(float(st[0])) elif len(s) < 5 and len(st) == 1: - number_of_bands = st[0] + number_of_bands = st[0] mesh_size = grid[0]*grid[1]*grid[2] origin.append(all_vectors[0]) vectors.append(all_vectors[1:]) @@ -179,7 +180,7 @@ class ExcitingParserContext(object): atom_forces[1].append([]) for j in range (3,6): atom_forces[1][-1].append(float(f_st[i][j])) - backend.addArrayValues("x_exciting_atom_forces",np.asarray(f_st)) + backend.addArrayValues("x_exciting_atom_forces",np.asarray(f_st)) def onClose_section_system(self, backend, gIndex, section): # dirPath = os.path.dirname(self.parser.fIn.name) @@ -195,9 +196,9 @@ class ExcitingParserContext(object): backend.addArrayValues('atom_positions', np.asarray(self.atom_pos)) self.atom_pos = [] if self.atom_labels is not None: - backend.addArrayValues('atom_labels', np.asarray(self.atom_labels)) + backend.addArrayValues('atom_labels', np.asarray(self.atom_labels, dtype=np.str)) self.atom_labels = [] - + def onClose_x_exciting_section_atoms_group(self, backend, gIndex, section): pos = [section['x_exciting_geometry_atom_positions_' + i] for i in ['x', 'y', 'z']] @@ -360,7 +361,7 @@ mainFileDescription = \ # SM(r"\s*(?P<x_exciting_store_total_forces>\s*\:+\s*[-\d\.]+\s*[-\d\.]+\s*[-\d\.]+\s*[A-Za-z]+\s*[A-Za-z]+)"), # SM(r"\s*(?P<x_exciting_store_total_forces>\s*\:+\s*[-\d\.]+\s*[-\d\.]+\s*[-\d\.]+\s*[A-Za-z]+\s*[A-Za-z]+)") # SM(r"\s*(?P<x_exciting_store_total_forces>\s*\:+\s*[-\d\.]+\s*[-\d\.]+\s*[-\d\.]+\s*[A-Za-z]+\s*[A-Za-z]+)"), -# ] +# ] # ) ]) ] @@ -393,4 +394,15 @@ cachingLevelForMetaName = { if __name__ == "__main__": # for name in metaInfoEnv.infoKinds: # print 'nameo', name - mainFunction(mainFileDescription, metaInfoEnv, parserInfo, cachingLevelForMetaName = cachingLevelForMetaName, superContext=ExcitingParserContext()) + + # Production + # mainFunction(mainFileDescription, metaInfoEnv, parserInfo, cachingLevelForMetaName = cachingLevelForMetaName, superContext=ExcitingParserContext()) + + # Debug + local_backend = LocalBackend(metaInfoEnv) + mainFunction(mainFileDescription, metaInfoEnv, parserInfo, outF=local_backend.fileOut, cachingLevelForMetaName = cachingLevelForMetaName, superContext=ExcitingParserContext(), superBackend=local_backend) + results = local_backend.results + program_name = results["program_name"] + atom_labels = results["atom_labels"] + print(program_name) + print(atom_labels)