diff --git a/parser/parser-exciting/exciting_parser_bandstructure.py b/parser/parser-exciting/exciting_parser_bandstructure.py index 4f6264d3e1ffe2ef51af458dbd0c100726d7d821..ed818b6ab9ee3c04e3a8aa900d5ce9a5a0e4523e 100644 --- a/parser/parser-exciting/exciting_parser_bandstructure.py +++ b/parser/parser-exciting/exciting_parser_bandstructure.py @@ -35,7 +35,6 @@ class BandHandler(xml.sax.handler.ContentHandler): def endDocument(self): self.inBand = False self.backend.closeSection("section_k_band",self.bandSectionGIndex) -# self.backend.closeSection("section_k_band_segment",self.normBandSectionGIndex) self.bandSectionGIndex = -1 self.normBandSectionGIndex = -1 @@ -43,7 +42,6 @@ class BandHandler(xml.sax.handler.ContentHandler): if name == "bandstructure": self.bandSectionGIndex = self.backend.openSection("section_k_band") self.backend.addValue("band_structure_kind","electronic") -# self.normBandSectionGIndex = self.backend.openSection("section_k_band_segment") self.inBand = True elif name == "band": self.energy.append([]) diff --git a/parser/parser-exciting/exciting_parser_eps.py b/parser/parser-exciting/exciting_parser_eps.py index 9cea41a7d0e582afef93506930345651294b0346..0f0e558580c697fb329766aa53caa67a34e0677a 100644 --- a/parser/parser-exciting/exciting_parser_eps.py +++ b/parser/parser-exciting/exciting_parser_eps.py @@ -22,7 +22,7 @@ from nomadcore.unit_conversion import unit_conversion import os, sys, json, logging ################################################################ -# This is the subparser for the exciting XS output +# This is the subparser for the epsilon tensor in the XS output ################################################################ def is_number(s): @@ -33,16 +33,12 @@ def is_number(s): return False class EPSParser(object): - """context for wien2k In2 parser""" def __init__(self): pass def startedParsing(self, path, parser): - """called when parsing starts""" self.parser = parser - # allows to reset values if the same superContext is used to parse different files -# self.initialize_values() def parseEpsilon(self, epsFile, backend, epsEn, epsilon): with open(epsFile) as g: diff --git a/parser/parser-exciting/exciting_parser_GS_input.py b/parser/parser-exciting/exciting_parser_gs_input.py similarity index 88% rename from parser/parser-exciting/exciting_parser_GS_input.py rename to parser/parser-exciting/exciting_parser_gs_input.py index 09a3b037a44685f9035ea8ab84893d8a1451ec55..e4f687009d6b036a0e52833f4d2e787d75e0da42 100644 --- a/parser/parser-exciting/exciting_parser_GS_input.py +++ b/parser/parser-exciting/exciting_parser_gs_input.py @@ -12,6 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +###################################################### +# this is the subparser for the groundstate input file +###################################################### + import xml.sax import logging import numpy as np @@ -24,7 +28,7 @@ class InputHandler(xml.sax.handler.ContentHandler): self.backend = backend def startElement(self, name, attrs): - if name == "libxc": #libXC + if name == "libxc": correlation = attrs.getValue("correlation")[3:] exchange = attrs.getValue("exchange")[3:] xcName = [correlation, exchange] diff --git a/parser/parser-exciting/exciting_parser_gw.py b/parser/parser-exciting/exciting_parser_gw.py index c120a92d33375d5ba322399922916ec466be0333..f583ff524eace71af79d5d9d61350100adc5dd86 100644 --- a/parser/parser-exciting/exciting_parser_gw.py +++ b/parser/parser-exciting/exciting_parser_gw.py @@ -19,15 +19,13 @@ from nomadcore.simple_parser import mainFunction, CachingLevel from nomadcore.simple_parser import SimpleMatcher as SM from nomadcore.local_meta_info import loadJsonFile, InfoKindEl from nomadcore.unit_conversion import unit_conversion -import os, sys, json, logging, exciting_parser_input +import os, sys, json, logging, exciting_parser_gw_input ################################################################ # This is the subparser for the exciting GW output ################################################################ - class GWParser(object): - """context for wien2k In2 parser""" def __init__(self): self.spinTreat = None @@ -40,11 +38,8 @@ class GWParser(object): def startedParsing(self, path, parser): """called when parsing starts""" self.parser = parser - # allows to reset values if the same superContext is used to parse different files -# self.initialize_values() def parseGW(self, gwFile, backend, dftMethodSectionGindex, dftSingleConfigurationGindex, xcName, unitCellVol,gmaxvr): -# logging.error("GW onClose_section_single_configuration_calculation") self.gmaxvr = float(gmaxvr[0]) self.unitCellVol = float(unitCellVol[0]) backend.openNonOverlappingSection("section_single_configuration_calculation") @@ -62,8 +57,8 @@ class GWParser(object): else: pass dosGWFile = os.path.join(dirPath, "TDOS-QP.OUT") - bandCarbGWFile = os.path.join(dirPath, "bandstructure-qp.dat") - bandBorGWFile = os.path.join(dirPath, "BAND-QP.OUT") + bandCarbGWFile = os.path.join(dirPath, "bandstructure-qp.dat") # carbon exciting + bandBorGWFile = os.path.join(dirPath, "BAND-QP.OUT") # boron exciting vertexGWFile = os.path.join(dirPath, "BANDLINES.OUT") vertexLabGWFile = os.path.join(dirPath, "bandstructure.xml") selfCorGWFile = os.path.join(dirPath, "SELFC.DAT") @@ -93,7 +88,7 @@ class GWParser(object): backend.addValue("method_to_method_kind", "starting_point") backend.closeNonOverlappingSection("section_method_to_method_refs") with open(inputgwFile) as f: - exciting_parser_input.parseInput(f, backend, self.gmaxvr) + exciting_parser_gw_input.parseInput(f, backend, self.gmaxvr) backend.closeSection("section_method",selfGWSetGIndex) if os.path.exists(vertexGWFile): @@ -341,47 +336,18 @@ class GWParser(object): backend.closeSection("section_k_band",bandGWGIndex) backend.closeNonOverlappingSection("section_single_configuration_calculation") -# logging.error("done GW onClose_section_single_configuration_calculation") - -# def onOpen_section_method(self, backend, gIndex, section): -# fava = section["gw_frequency_number"] -# print("fava=",fava) - -# def onClose_section_single_configuration_calculation(self, backend, gIndex, section): -# if dftSingleConfigurationGindex is not None: -## if self.secSingleConfIndex is None: -## self.secSingleConfIndex = gIndex -## singleGIndex = backend.openSection("section_single_configuration_calculation") -# fermi = section["gw_fermi_energy"] -# fundamental = section["gw_fundamental_gap"] -# optical = section["gw_optical_gap"] -# backend.addValue("gw_fermi_energy", fermi) -# backend.addValue("gw_fundamental_gap", fundamental) -# backend.addValue("gw_optical_gap", optical) -## backend.closeSection("section_single_configuration_calculation",singleGIndex) -# else: -# singleGIndex = backend.openSection("section_single_configuration_calculation") -# fermi = section["gw_fermi_energy"] -# fundamental = section["gw_fundamental_gap"] -# optical = section["gw_optical_gap"] -# backend.addValue("gw_fermi_energy", fermi) -# backend.addValue("gw_fundamental_gap", fundamental) - # backend.addValue("gw_optical_gap", optical) - # backend.closeSection("section_single_configuration_calculation",singleGIndex) def buildGWMatchers(): return SM( name = 'root', weak = True, startReStr = "\=\s*Main GW output file\s*\=", -# sections = ["section_run"], subMatchers = [ SM( startReStr = "\-\s*frequency grid\s*\-", endReStr = "\-\s*Peak memory estimate \(Mb, per process\)\:\s*\-", sections = ["section_method"], subMatchers = [ -# SM(r"\s*Type\:\s*\<\s*(?P<gw_dummy>[-a-zA-Z]+)\s*\>"), SM(r"\s*(?P<gw_frequency_number>[0-9]+)\s*(?P<gw_frequency_values__hartree>[0-9]\.[0-9]*([E]?[-]?[-0-9]+))\s*(?P<gw_frequency_weights>[0-9]\.[0-9]*([E]?[-]?[-0-9]+))", repeats = True) ]), SM( diff --git a/parser/parser-exciting/exciting_parser_input.py b/parser/parser-exciting/exciting_parser_gw_input.py similarity index 98% rename from parser/parser-exciting/exciting_parser_input.py rename to parser/parser-exciting/exciting_parser_gw_input.py index 791fd58b8c72b116edadc6331fd7be36b4918b12..9d1b38526f69e3d1119bdcf7ba4a7e907b5511cd 100644 --- a/parser/parser-exciting/exciting_parser_input.py +++ b/parser/parser-exciting/exciting_parser_gw_input.py @@ -12,6 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +############################################# +# this is the subparser for the GW input file +############################################# + import xml.sax import logging import numpy as np @@ -79,7 +83,6 @@ class InputHandler(xml.sax.handler.ContentHandler): def startElement(self, name, attrs): fromH = unit_conversion.convert_unit_function("hartree", "J") if name == "gw": -# self.inputSectionGIndex = self.backend.openSection("section_system") self.inGWInput = True try: self.coreflag = attrs.getValue('coreflag') diff --git a/parser/parser-exciting/exciting_parser_xs.py b/parser/parser-exciting/exciting_parser_xs.py index 3d82edc034fa9ebbe146690cf8f67af58819a8db..85b6912a01ebddd34171d0407764d291fc9a81c4 100644 --- a/parser/parser-exciting/exciting_parser_xs.py +++ b/parser/parser-exciting/exciting_parser_xs.py @@ -21,22 +21,18 @@ from nomadcore.local_meta_info import loadJsonFile, InfoKindEl from nomadcore.unit_conversion import unit_conversion import os, sys, json, logging -################################################################ -# This is the subparser for the exciting XS output -################################################################ +########################################################################### +# This is the subparser for the excitons, oscillator strength etc of the XS +########################################################################### class XSParser(object): - """context for wien2k In2 parser""" def __init__(self): pass def startedParsing(self, path, parser): - """called when parsing starts""" self.parser = parser - # allows to reset values if the same superContext is used to parse different files -# self.initialize_values() def parseExciton(self, excFile, backend, excNum, excEn, excBindEn, osclStr, transCoeff): with open(excFile) as g: diff --git a/parser/parser-exciting/exciting_parser_XS_input.py b/parser/parser-exciting/exciting_parser_xs_input.py similarity index 84% rename from parser/parser-exciting/exciting_parser_XS_input.py rename to parser/parser-exciting/exciting_parser_xs_input.py index 489445989305dc4a7acf336e7ac5d942096e6acf..f17f7fd8fe02d8d8009ed692ffe2a1f29195896a 100644 --- a/parser/parser-exciting/exciting_parser_XS_input.py +++ b/parser/parser-exciting/exciting_parser_xs_input.py @@ -12,6 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +###################################################### +# this is the subparser for the XS output (BSE, TDDFT) +###################################################### + import xml.sax import logging import numpy as np @@ -21,10 +25,8 @@ from nomadcore.unit_conversion import unit_conversion class InputHandler(xml.sax.handler.ContentHandler): def __init__(self, backend, rgkmax): -# self.xsType = None self.rgkmax = rgkmax[0] self.rgkmaxScr = rgkmax[0] -# print("self.rgkmax===",self.rgkmax) self.backend = backend self.inputSectionGIndex = -1 self.inXSInput = False @@ -46,14 +48,10 @@ class InputHandler(xml.sax.handler.ContentHandler): self.scissor = 0.0 self.vkloffXS = [0.0, 0.0, 0.0] self.vkloffXSDum = [0.0, 0.0, 0.0] -# self.vkloffScr = [-1.0, -1.0, -1.0] -# self.vkloffScrDum = "-1.0 -1.0 -1.0" self.screening = "none" +######### BELOW XS VARIABLES ########### self.bse = False -# self.screentype = "full" -############ BSE variables################ self.aresbse = True -# self.bsetype = "singlet" self.lmaxdielt = 14 self.nstlbse = [0, 0, 0, 0] self.nstlbseDum = [0, 0, 0, 0] @@ -80,16 +78,7 @@ class InputHandler(xml.sax.handler.ContentHandler): self.tetra = False self.tetradf = "false" -# self.xstype = "BSE" - def endDocument(self): -# pass -# if self.freqgrid == "none": -# self.backend.addValue("gw_max_frequency", self.freqmax) -# self.backend.addValue("gw_frequency_grid_type", self.fgrid) -# self.backend.addValue("gw_number_of_frequencies", self.nomeg) - # self.backend.addValue("gw_basis_set", "mixed") -# self.backend.addValue("gw_qp_equation_treatment", "linearization") if self.tetradf == "true": self.backend.addValue("x_exciting_xs_tetra", True) @@ -102,9 +91,6 @@ class InputHandler(xml.sax.handler.ContentHandler): self.ngridkXS[j] = int(self.ngridkXSDum[j]) self.vkloffXS[j] = float(self.vkloffXSDum[j]) self.ngridkScr[j] = int(self.ngridkScrDum[j]) -# self.nstlbse[j] = int (self.nstlbseDum[j]) -# self.nstlxas[j] = int (self.nstlxasDum[j]) -# self.vkloffScr[j] = float(self.vkloffScrDum[j]) for j in range(0,4): self.nstlbse[j] = int (self.nstlbseDum[j]) @@ -122,14 +108,6 @@ class InputHandler(xml.sax.handler.ContentHandler): self.backend.addValue("x_exciting_xs_bse_xasedge", self.xasedge) self.backend.addValue("x_exciting_xs_bse_xasspecies", self.xasspecies) self.backend.addValue("x_exciting_xs_bse_xas_number_of_bands", self.nstlxas) -# self.backend.addValue("x_exciting_xs_bse_xas_number_of_bands", self.nstlxas) - -# for j in range(0,4): -# self.nstlbse[j] = int (self.nstlbseDum[j]) -# for j in range(0,2): -# self.nstlxas[j] = int (self.nstlxasDum[j]) - -# self.backend.addValue("x_exciting_xs_screeninig_vkloff", self.vkloffScr) if self.rgkmaxXs == 0.0: self.backend.addValue("x_exciting_xs_rgkmax", self.rgkmax) @@ -148,14 +126,14 @@ class InputHandler(xml.sax.handler.ContentHandler): self.backend.addValue("x_exciting_xs_bse_rgkmax", float(self.rgkmaxBse)) def startElement(self, name, attrs): -# xsType = None if name == "xs": -# self.inputSectionGIndex = self.backend.openSection("section_system") self.inXSInput = True xstype = attrs.getValue('xstype') + # IMPORTANT: so far, there is no way to define an xs calculation type. I have introduced a + # code-specific metadata, i.e. x_exciting_xs_type, that will have to be changed in the future. + # BSE or TDDFT could go into "electronic_structure_method" self.backend.addValue("x_exciting_xs_xstype", xstype) self.backend.addValue('x_exciting_electronic_structure_method', xstype) -# print("xstyppe===",xstype) try: self.broad = attrs.getValue('broad') @@ -212,7 +190,6 @@ class InputHandler(xml.sax.handler.ContentHandler): try: dummy = attrs.getValue('ngridk') self.ngridkScrDum = dummy.split() -# print("dummo===",self.ngridkScrDum) except: self.ngridkScrDum = [0, 0, 0] try: @@ -225,25 +202,8 @@ class InputHandler(xml.sax.handler.ContentHandler): except: self.backend.addValue("x_exciting_xs_screening_type", self.screentype) -# self.aresbse = "true" -# self.bsetype = "singlet" -# self.lmaxdielt = 14 -# self.nstlbse = [0, 0, 0, 0] -# self.nstlxas = [0, 0] -# self.rgkmaxBse = rgkmax[0] -# self.sciavbd = "true" -# self.sciavqbd = "false" -# self.sciavqhd = "false" -# self.sciavqwg = "false" -# self.sciavtype = "spherical" -# self.xas = "false" -# self.xasatom = 0 -# self.xasedge = "K" -# self.xasspecies = 0 - elif name == "BSE": self.bse = True -# xsType = "BSE" try: self.aresbse = attrs.getValue('aresbse') if self.aresbse == "true": @@ -259,10 +219,8 @@ class InputHandler(xml.sax.handler.ContentHandler): self.backend.addValue("x_exciting_xs_bse_angular_momentum_cutoff", self.lmaxdielt) try: self.rgkmaxBse = attrs.getValue('rgkmax') -# self.backend.addValue("x_exciting_xs_bse_rgkmax", float(self.rgkmax)) except: pass -# self.backend.addValue("x_exciting_xs_bse_rgkmax", self.rgkmax) try: self.sciavbd = attrs.getValue('sciavbd') if self.sciavqbd == "true": @@ -303,33 +261,23 @@ class InputHandler(xml.sax.handler.ContentHandler): try: self.xas = attrs.getValue('xas') if self.xas == "false": -# print("xas===",self.xas) self.backend.addValue("x_exciting_xs_bse_xas", False) else: -# print("xas===",self.xas) self.backend.addValue("x_exciting_xs_bse_xas", True) except: -# print("xasdefault===",self.xas) self.backend.addValue("x_exciting_xs_bse_xas", self.xas) try: self.xasatom = int(attrs.getValue('xasatom')) -# self.backend.addValue("x_exciting_xs_bse_xasatom", self.xasatom) except: pass -# self.backend.addValue("x_exciting_xs_bse_xasatom", self.xasatom) try: self.xasedge = attrs.getValue('xasedge') -# self.backend.addValue("x_exciting_xs_bse_xasedge", self.xasedge) except: pass -# self.backend.addValue("x_exciting_xs_bse_xasedge", self.xasedge) try: self.xasspecies = int(attrs.getValue('xasspecies')) -# self.backend.addValue("x_exciting_xs_bse_xasspecies", self.xasspecies) except: pass -# self.backend.addValue("x_exciting_xs_bse_xasspecies", self.xasspecies) -# if self.xas == False: try: dummy = attrs.getValue('nstlbse') self.nstlbseDum = dummy.split() @@ -434,13 +382,8 @@ class InputHandler(xml.sax.handler.ContentHandler): self.tetra = True try: self.tetradf = attrs.getValue('tetradf') -# if self.tetradf == "true": -# selfbackend.addValue("x_exciting_xs_tetra", True) -# else: -# self.backend.addValue("x_exciting_xs_tetra", False) except: self.tetradf == "false" -# self.backend.addValue("x_exciting_xs_tetra", False) def endElement(self, name): pass diff --git a/parser/parser-exciting/parser_exciting.py b/parser/parser-exciting/parser_exciting.py index 78562466f1de3849f5255bf002a5e68d9a22a0f3..7c7c6290a3d3aee347abd44868d96c323543121e 100644 --- a/parser/parser-exciting/parser_exciting.py +++ b/parser/parser-exciting/parser_exciting.py @@ -22,8 +22,8 @@ from nomadcore.local_meta_info import loadJsonFile, InfoKindEl from nomadcore.caching_backend import CachingLevel from nomadcore.unit_conversion import unit_conversion from nomadcore.unit_conversion.unit_conversion import convert_unit_function -import os, sys, json, exciting_parser_dos,exciting_parser_bandstructure, exciting_parser_gw, exciting_parser_GS_input -import exciting_parser_XS_input, exciting_parser_xs, exciting_parser_eps +import os, sys, json, exciting_parser_dos,exciting_parser_bandstructure, exciting_parser_gw, exciting_parser_gs_input +import exciting_parser_xs_input, exciting_parser_xs, exciting_parser_eps from ase import Atoms import logging @@ -38,8 +38,8 @@ class ExcitingParserContext(object): def __init__(self): self.parser = None -# self.mainFileUri = sys.argv[1] #exciting !!!!!!LOCAL HOME!!!!!!!! OKOKOKOK - self.mainFileUri = sys.argv[2] #exciting !!! FOR NOMAD URI nmd:// or sbt -> zip file!!!!!!!! OKOKKOOK +# self.mainFileUri = sys.argv[1] # to test on local machine: uncomment this line and comment the one below + self.mainFileUri = sys.argv[2] # see the line above self.mainFilePath = None self.mainFile = None self.volumeCubOpt = False @@ -54,8 +54,6 @@ class ExcitingParserContext(object): def startedParsing(self, path, parser): self.parser=parser self.initialize_values() -# self.atom_pos = [] -# self.atom_labels = [] self.XSSetGIndex = None self.secMethodIndex = None self.secSystemIndex = None @@ -86,33 +84,17 @@ class ExcitingParserContext(object): self.xsNAR = False self.xstype = None self.tddftKernel = None -# self.xsType = None -# self.volumeOptIndex = 0 def onOpen_section_run(self, backend, gIndex, section): -# self.i=self.i+1 -# print("self.i=",self.i) curDir = os.getcwd() - mainFile = self.parser.fIn.fIn.name #####exciting sbt -> zip filei r from NOMAD URI nmd:// #### YES ?????????? sure???? check first OKOKOKKO - self.mainFilePath = os.path.dirname(mainFile) #####exciting sbt -> zip file#### YES ?????????? sure???? check first OKOKOKKO -# self.mainFilePath = self.mainFileUri[0:-9] #####exciting LOCAL HOME ####### YES OKOKOKOK -# print("self.mainFilePath===",self.mainFilePath) + mainFile = self.parser.fIn.fIn.name # see below + self.mainFilePath = os.path.dirname(mainFile) # see below +# self.mainFilePath = self.mainFileUri[0:-9] # to test on local machine: uncomment this line and comment the two lines above os.chdir(self.mainFilePath) os.chdir('../') -# self.i=self.i+1 -# print("self.i=",self.i) -# self.volumeOptIndex = 0 -# for root, dirs, files in os.walk('.'): -# if root == '.': -# for directory in dirs: -# if directory[-4:-1]== -# print("root=",root) -# print("dirs=",dirs) -# print("files=",files) #####volume optimization for simple cubic systems######## if 'INFO_VOL' in os.listdir('.'): self.volumeOpt = True -# print("self.volumeOpt=",self.volumeOpt) with open('INFO_VOL') as g: while 1: s = g.readline() @@ -121,46 +103,25 @@ class ExcitingParserContext(object): else: for files in os.listdir('.'): -# print("files=",files) -# backend.addValue("x_exciting_dummy2", files) if files[0:7] == 'rundir-': self.volumeCubOptIndex+=1 os.chdir(curDir) -# curDir = os.getcwd() -# dirPath = self.mainFileUri[0:-9] -# os.chdir(dirPath) -# os.chdir('../') -# i = 0 -# for files in os.listdir('.'): -# if files[0:7] == 'rundir-': -# i+=1 -# if i>1: -# self.volumeOpt = True -# optGindex = backend.openSection("section_method") -# print("optGindex=",optGindex) -# backend.addValue("x_exciting_volume_optimization", self.volumeOpt) -# backend.closeSection("section_method", optGindex) -# os.chdir(curDir) def onOpen_section_sampling_method(self, backend, gIndex, section): self.secSamplingMethodIndex = gIndex backend.addValue("sampling_method", "geometry_optimization") -# print("self.secSamplingMethodIndex=",self.secSamplingMethodIndex) self.samplingMethod = "geometry_optimization" -# print("self.samplingMethod=",self.samplingMethod) def onOpen_section_system(self, backend, gIndex, section): self.secSystemIndex = gIndex curDir = os.getcwd() - mainFile = self.parser.fIn.fIn.name #####exciting sbt -> zip file or from NOMAD URI nmd:// #### YES ?????????? sure???? check first OKOKOKKO - self.mainFilePath = os.path.dirname(mainFile) #####exciting sbt -> zip file#### YES ?????????? sure???? check first OKOKOKKO -# self.mainFilePath = self.mainFileUri[0:-9] #####exciting LOCAL HOME####### YES OKOKOKOK -# print("self.mainFilePath===",self.mainFilePath) + mainFile = self.parser.fIn.fIn.name # see below + self.mainFilePath = os.path.dirname(mainFile) # see below +# self.mainFilePath = self.mainFileUri[0:-9] # to test on local machine: uncomment this line and comment the two lines above os.chdir(self.mainFilePath) -# print("listdir=",os.listdir('.')) +# special treatment for Clathrates from CELL if 'str.out' in os.listdir('.'): self.clathrates = True -# print("clathrate_vero===",self.clathrates) backend.addValue("x_exciting_clathrates", True) clathrate_labels = [] clathrate_coordinates = [] @@ -171,17 +132,12 @@ class ExcitingParserContext(object): s = s.strip() s = s.split() if len(s) == 4: -# print("s=",s[0],float(s[0])) clathrate_coordinates.append([float(s[0]),float(s[1]),float(s[2])]) clathrate_labels.append(s[3]) -# print("clathrate_coordinates=",clathrate_coordinates) backend.addArrayValues("x_exciting_clathrates_atom_coordinates", np.asarray(clathrate_coordinates)) backend.addValue("x_exciting_clathrates_atom_labels", clathrate_labels) else: -# print("clathrate_falso===",self.clathrates) backend.addValue("x_exciting_clathrates", False) -# backend.addArrayValues("x_exciting_clathrates_atom_coordinates", np.array(clathrate_coordinates)) -# backend.addValue("x_exciting_clathrates_atom_labels", clathrate_labels) os.chdir(curDir) def onOpen_section_single_configuration_calculation(self, backend, gIndex, section): @@ -194,25 +150,10 @@ class ExcitingParserContext(object): self.secMethodIndex = gIndex def onOpen_x_exciting_section_geometry_optimization(self, backend, gIndex, section): -# """Trigger called when x_abinit_section_dataset is opened. -# """ self.samplingGIndex = backend.openSection("section_sampling_method") def onClose_section_run(self, backend, gIndex, section): self.secRunIndex = gIndex -# backend.addValue("x_exciting_dummy", self.volumeOptIndex) -########### VOLUME OPTIMIZATION ######################### -# curDir = os.getcwd() -## mainFile = self.parser.fIn.fIn.name #####exciting sbt -> zip file#### YES ?????????? sure???? check first OKOKOKKO -## dirPath = os.path.dirname(mainFile) #####exciting sbt -> zip file#### YES ?????????? sure???? check first OKOKOKKO -# dirPath = self.mainFileUri[0:-9] #####exciting LOCAL HOME or from NOMAD URI nmd:// ####### YES OKOKOKOK -# os.chdir(dirPath) -# os.chdir('../') -# self.volumeOptIndex = 0 -# for files in os.listdir('.'): -# if files[0:7] == 'rundir-': -# self.volumeOptIndex+=1 -######################independent from above################# if self.volumeCubOptIndex>1: self.volumeCubOpt = True optGindex = backend.openSection("section_method") @@ -220,10 +161,8 @@ class ExcitingParserContext(object): backend.closeSection("section_method", optGindex) # os.chdir(curDir) -####################################TEST############################ mainFile = self.parser.fIn.fIn.name dirPath = os.path.dirname(self.parser.fIn.name) -# print("dirPath===",dirPath) gw_File = os.path.join(dirPath, "GW_INFO.OUT") gwFile = os.path.join(dirPath, "GWINFO.OUT") xsFile = os.path.join(dirPath, "INFOXS.OUT") @@ -245,6 +184,12 @@ class ExcitingParserContext(object): with open(gFile) as fIn: subParser.parseFile(fIn) break +############################################################################################################################################## +######################################################### IMPORTANT NOTE ##################################################################### +# All the excited-states -BSE, TDDFT- metadata start with x_exciting_xs_... So far, oct 29, 2018, the metadata sintax has not been yet updated +# and it is not possible to push them as common metadata. So, they are still defined as code-specific metadata in exciting.nomadmetainfo.json. +# In the future, they will have to be moved to common.nomadmetainfo.json and the names changed into x_xs_... (same fashion as x_gw_...). +############################################################################################################################################## if os.path.exists(xsFile): excNum = [] @@ -262,40 +207,25 @@ class ExcitingParserContext(object): xstype = "TDDFT" self.xstype = "TDDFT" fromeV = unit_conversion.convert_unit_function("eV", "J") -# print("BSE!!!") -# if os.path.exists(inputgwFile): inputXSFile = os.path.join(dirPath, "input.xml") self.XSSetGIndex = backend.openSection("section_method") with open(inputXSFile) as f: - exciting_parser_XS_input.parseInput(f, backend, self.rgkmax) -# xstype = section["x_exciting_xs_type"] -# print("xstype===",xstype) -# print("xsType===",exciting_parser_XS_input.InputHandler.self.xsType) -# backend.addValue('x_exciting_electronic_structure_method', "BSE") ########!!!!!!!!!!! So far, BSE is not a valid value for electronic_structure_method. It must be added! ######### -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) -# backend.addValue('x_exciting_xs_starting_point', self.xcName) -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) + exciting_parser_xs_input.parseInput(f, backend, self.rgkmax) if self.secMethodIndex is not None: m2mGindex = backend.openNonOverlappingSection("section_method_to_method_refs") backend.addValue("method_to_method_ref", self.secMethodIndex) backend.addValue("method_to_method_kind", "starting_point") backend.closeNonOverlappingSection("section_method_to_method_refs") -# xstype = section["x_exciting_xs_type"] -# print("xstype===",xstype) for files in os.listdir(dirPath): if files[0:11] == "EXCITON_BSE": xstype = "BSE" self.xstype = "BSE" dummyBse = files[11:13] -# self.tensorComp = files[-6:-4] self.tensorComp.append(files[-6:-4]) if dummyBse == 'si': self.bsetype = 'singlet' -# name = "EXCITON_BSE" + self.bsetype elif dummyBse == 'tr': self.bsetype = 'triplet' elif dummyBse == 'RP': @@ -303,7 +233,6 @@ class ExcitingParserContext(object): elif dummyBse == 'IP': self.bsetype = 'IP' name = "EXCITON_BSE" + self.bsetype + '_SCR' -# nameEps = "EPSILON_BSE" + self.bsetype + '_SCR' if files[len(name):len(name)+4] == 'full': self.screentype = 'full' elif files[len(name):len(name)+4] == 'diag': @@ -312,27 +241,10 @@ class ExcitingParserContext(object): self.screentype = 'noinvdiag' elif files[len(name):len(name)+4] == 'long': self.screentype = 'longrange' -# else: -# xstype = "TDDFT" -# print("xstype===",xstype) -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) if xstype == "BSE": numberOfComponents = len(self.tensorComp) -# backend.addValue("x_exciting_xs_screening_type", self.screentype) backend.addValue("x_exciting_xs_bse_type", self.bsetype) -# print("===", self.tensorComp[0]) -# with open(inputXSFile) as f: -# exciting_parser_XS_input.parseInput(f, backend, self.rgkmax) -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) backend.closeSection("section_method",self.XSSetGIndex) -# teste = section["x_exciting_xs_tetra"] -# print("teste===",teste) -# numberOfComponents = len(self.tensorComp) -# print("xstype=====",xstype) backend.openNonOverlappingSection("section_single_configuration_calculation") if self.secSingleConfIndex is not None: backend.openNonOverlappingSection("section_calculation_to_calculation_refs") @@ -353,7 +265,6 @@ class ExcitingParserContext(object): sigma.append([[],[]]) lossEn.append([]) loss.append([[],[]]) -# lossDummy.append([]) outputXSFile = os.path.join(dirPath, "EXCITON_BSE" + self.bsetype + '_SCR' + self.screentype + "_OC" + self.tensorComp[i] + ".OUT") outputEpsFile = os.path.join(dirPath, "EPSILON_BSE" + self.bsetype + '_SCR' + self.screentype + "_OC" + self.tensorComp[i] + ".OUT") @@ -411,7 +322,6 @@ class ExcitingParserContext(object): for files in os.listdir(dirPath): if files[0:9] == "SIGMA_NLF": tensorComp.append(files[-13:-11]) -# print("tensorComp===",tensorComp) if self.xsTetra and self.xsAC and not self.xsNAR: ext = "TET_AC_NAR" elif not self.xsTetra and self.xsAC and not self.xsNAR: @@ -427,8 +337,6 @@ class ExcitingParserContext(object): else: ext="" -# dielTensSymIm = [] -# dielTensNoSymIm = [] with open(QFile) as g: while 1: s = g.readline() @@ -436,7 +344,6 @@ class ExcitingParserContext(object): s = s.strip() s = s.split() if not is_number(s[1]): -# print("s===",s) qpointNumber = int(s[0] ) else: qPlusGCartesian.append([]) @@ -458,10 +365,6 @@ class ExcitingParserContext(object): ext = "TET_NAR" else: ext="" -# xstype = "BSE" -# self.xstype = "BSE" -# dummyBse = files[11:13] -# self.tensorComp = files[-6:-4] for i in range(qpointNumber): dielTensSym.append([[],[]]) dielTensNoSym.append([[],[]]) @@ -476,9 +379,7 @@ class ExcitingParserContext(object): sigmaLoc[1].append([]) sigmaNoLoc[0].append([]) sigmaNoLoc[1].append([]) -# dielTensSymIm.append([[],[]]) -# dielTensNoSymIm.append([[],[]]) if i < 10: qExt00 = '_QMT00'+ str(i+1) qPlusGFile = os.path.join(dirPath, 'GQPOINTS' + qExt00 + '.OUT') @@ -523,12 +424,6 @@ class ExcitingParserContext(object): sigmaLoc[1][-1].append([]) sigmaNoLoc[0][-1].append([]) sigmaNoLoc[1][-1].append([]) -# print("j===",j) -# print("tensorComp===",tensorComp[j]) -# print("ext===",ext) -# print("self.tddftKernel===",self.tddftKernel) -# print("qExt00===",qExt00) -# print("tutto===",'EPSILON_' + ext + 'FXC' + self.tddftKernel[0] + '_OC' + tensorComp[j] + qExt00 + '.OUT') epsilonLocalField = os.path.join(dirPath, 'EPSILON_' + ext + 'FXC' + self.tddftKernel[0] + '_OC' + tensorComp[j] + qExt00 + '.OUT') epsilonNoLocalField = os.path.join(dirPath, 'EPSILON_' + ext + 'NLF_' + 'FXC' + self.tddftKernel[0] + '_OC' + tensorComp[j] + qExt00 + '.OUT') lossFunctionLocalFieldFile = os.path.join(dirPath, 'LOSS_' + ext + 'FXC' + self.tddftKernel[0] + '_OC' + tensorComp[j] + qExt00 + '.OUT') @@ -561,7 +456,6 @@ class ExcitingParserContext(object): if not s: break s = s.strip() s = s.split() -# print("s===",s) if s and is_number(s[0]): loss = float(s[1]) lossFunctionLoc[-1][-1].append(loss) @@ -571,7 +465,6 @@ class ExcitingParserContext(object): if not s: break s = s.strip() s = s.split() -# print("s===",s) if s and is_number(s[0]): loss = float(s[1]) lossFunctionNoLoc[-1][-1].append(loss) @@ -595,16 +488,7 @@ class ExcitingParserContext(object): sigmaRe, sigmaIm = float(s[1]),float(s[2]) sigmaNoLoc[0][-1][-1].append(sigmaRe) sigmaNoLoc[1][-1][-1].append(sigmaIm) -# dielFunctEne[-1][-1].append(ene) -# if s and is_number(s[0]): -# dielTensSym[i][0].append([float(s[0]),float(s[1]),float(s[2])]) -# dielTensSym[i][1].append([float(s[3]),float(s[4]),float(s[5])]) -# print("loss===",lossFunctionLoc) -# print("ext===",ext) -# print("dielTensSym===",dielTensSym) -# print("dielTensNoSym===",dielTensNoSym) -# qPlusGLattice[i].append([float(s[1]),float(s[2]),float(s[3])]) -# qPlusGCartesian[i].append([float(s[4]),float(s[5]),float(s[6])]) + backend.addValue("x_exciting_xs_tddft_sigma_local_field",sigmaLoc) backend.addValue("x_exciting_xs_tddft_sigma_no_local_field",sigmaNoLoc) backend.addValue("x_exciting_xs_tddft_loss_function_local_field",lossFunctionLoc) @@ -638,13 +522,7 @@ class ExcitingParserContext(object): backend.addArrayValues("frame_sequence_local_frames_ref", np.array(self.frameSequence)) backend.addValue("frame_sequence_to_sampling_ref", self.samplingGIndex) -# print("self.samplingMethod=",self.samplingMethod) if self.samplingMethod == "geometry_optimization": -# gix = backend.openSection("section_sampling_method") -# backend.addValue("XC_functional_name", xcName) -# backend.closeSection("section_sampling_method", gix) -# geometryForceThreshold = section["x_exciting_geometry_optimization_threshold_force"] -# print("geometryForceThreshold=",self.geometryForceThreshold) gi = backend.openSection("section_sampling_method") backend.addValue("geometry_optimization_threshold_force", self.geometryForceThreshold) backend.closeSection("section_sampling_method", gi) @@ -689,7 +567,7 @@ class ExcitingParserContext(object): dirPath = os.path.dirname(self.parser.fIn.name) inputGSFile = os.path.join(dirPath, "input.xml") with open(inputGSFile) as f: - exciting_parser_GS_input.parseInput(f, backend) + exciting_parser_gs_input.parseInput(f, backend) else: for xcName in xc_internal_map[xcNr]: self.xcName = xcName @@ -698,33 +576,22 @@ class ExcitingParserContext(object): backend.closeSection("section_XC_functionals", gi) def onClose_section_single_configuration_calculation(self, backend, gIndex, section): -# logging.error("BASE onClose_section_single_configuration_calculation") backend.addValue('single_configuration_to_calculation_method_ref', self.secMethodIndex) backend.addValue('single_configuration_calculation_to_system_ref', self.secSystemIndex) -# print("self.samplingMethod=",self.samplingMethod) -####################VOLUME TEST BEGIN################################ +####################VOLUME OPTIMIZATION BEGIN################################ ext_uri = [] -# backend.addValue("x_exciting_dummy=",self.volumeOptIndex) -# backend.addValue("x_exciting_dummy", self.volumeOptIndex) if self.volumeCubOptIndex > 1: for j in range(1, self.volumeCubOptIndex): if (j<10): ext_uri.append(self.mainFilePath[0:-9] + 'rundir-0' + str(j) + '/INFO.OUT') -# backend.addValue("x_exciting_dummy2", ext_uri[-1]) -# print("ext_uri===",ext_uri) else: ext_uri.append(self.mainFilePath[0:-9] + 'rundir-' + str(j) + '/INFO.OUT') -# backend.addValue("x_exciting_dummy2", ext_uri[-1]) -# print("ext_uri===",ext_uri) -# backend.addArrayValues("x_exciting_dummy2", np.asarray(ext_uri)) for ref in ext_uri: refGindex = backend.openSection("section_calculation_to_calculation_refs") backend.addValue("calculation_to_calculation_external_url", ref) backend.addValue("calculation_to_calculation_kind", "source_calculation") backend.closeSection("section_calculation_to_calculation_refs", refGindex) - -####################VOLUME TEST END############################ - +####################VOLUME OPTIMIZATION END############################ if self.samplingMethod == "geometry_optimization": self.geometryForceThreshold = section["x_exciting_geometry_optimization_threshold_force"][0] @@ -737,11 +604,6 @@ class ExcitingParserContext(object): for i in range(0,atoms): atom_geometry_forces.append([forceX[i],forceY[i],forceZ[i]]) backend.addValue("atom_forces",atom_geometry_forces) -# print("geometryForceThreshold=",geometryForceThreshold) -# backend.addValue("geometry_optimization_threshold_force", geometryForceThreshold) -# else: -# pass -# ##############TO DO. FIX FORCES##################### # forceX = section["x_exciting_atom_forces_x"] # if forceX: @@ -799,14 +661,18 @@ class ExcitingParserContext(object): bandFile = os.path.join(dirPath, "bandstructure.xml") fermiSurfFile = os.path.join(dirPath, "FERMISURF.bxsf") eigvalFile = os.path.join(dirPath, "EIGVAL.OUT") -# logging.error("done BASE onClose_section_single_configuration_calculation") +######### DOS ################## if os.path.exists(dosFile): with open(dosFile) as f: exciting_parser_dos.parseDos(f, backend, self.spinTreat, self.unit_cell_vol) + +####### Band structure ########## if os.path.exists(bandFile): with open(bandFile) as g: exciting_parser_bandstructure.parseBand(g, backend, self.spinTreat) + +####### Eigenvalues ############ if os.path.exists(eigvalFile): eigvalGIndex = backend.openSection("section_eigenvalues") with open(eigvalFile) as g: @@ -932,17 +798,13 @@ class ExcitingParserContext(object): self.secSystemDescriptionIndex = gIndex if self.atom_pos and self.cell_format[0] == 'cartesian': -# print("self.atom_pos=",self.atom_pos) backend.addArrayValues('atom_positions', np.asarray(self.atom_pos)) elif self.atom_pos and self.cell_format[0] == 'lattice': -# print("aaaself.atom_pos=",self.atom_pos) -# print("aaaself.atom_labels=",self.atom_labels) atoms = Atoms(self.atom_labels, self.atom_pos, cell=[(1, 0, 0),(0, 1, 0),(0, 0, 1)]) atoms.set_cell(self.sim_cell, scale_atoms=True) self.atom_pos = atoms.get_positions() backend.addArrayValues('atom_positions', np.asarray(self.atom_pos)) if self.atom_labels is not None: -# print("aaaself.atom_labels=",self.atom_labels) backend.addArrayValues('atom_labels', np.asarray(self.atom_labels)) self.atom_labels = [] @@ -962,7 +824,6 @@ class ExcitingParserContext(object): pass def onClose_x_exciting_section_atoms_group(self, backend, gIndex, section): -# print("start.self.atom_labels=",self.atom_labels) fromB = unit_conversion.convert_unit_function("bohr", "m") formt = section['x_exciting_atom_position_format'] if self.samplingMethod is not "geometry_optimization": @@ -972,38 +833,19 @@ class ExcitingParserContext(object): if self.atom_labels is not None: self.atom_labels = [] self.cell_format = formt pos = [section['x_exciting_geometry_atom_positions_' + i] for i in ['x', 'y', 'z']] -# print("pos=",pos) pl = [len(comp) for comp in pos] natom = pl[0] if pl[1] != natom or pl[2] != natom: raise Exception("invalid number of atoms in various components %s" % pl) for i in range(natom): -# print("nattom=",natom) -# print("i=",i) -# print("natom=",natom) -# print("[pos[0][i]=",pos[0][i]) -# print("[pos[1][i]=",pos[1][i]) -# print("[pos[2][i]=",pos[2][i]) -# print("self.atom_pos=",self.atom_pos) if formt[0] == 'cartesian': self.atom_pos.append([fromB(pos[0][i]), fromB(pos[1][i]), fromB(pos[2][i])]) else: -# print("self.atom_labels_prima=",self.atom_labels) -# print("self.atom_pos_prima=",self.atom_pos) self.atom_pos.append([pos[0][i], pos[1][i], pos[2][i]]) -# print("self.atom_pos_dopo=",self.atom_pos) -# print("self.atom_labels_dopo=",self.atom_labels) -# print("natom=",natom) -# print("section['x_exciting_geometry_atom_labels']=",section['x_exciting_geometry_atom_labels']) -# print("self.samplingMethod[0]=",self.samplingMethod) if self.samplingMethod is not "geometry_optimization": -# print("prima=",self.atom_labels) self.atom_labels = self.atom_labels + (section['x_exciting_geometry_atom_labels'] * natom) -# print("self.atom_labels=",self.atom_labels) -# print("section['x_exciting_geometry_atom_labels']=",section['x_exciting_geometry_atom_labels']) else: self.atom_labels = self.atom_labels + section['x_exciting_geometry_atom_labels'] -# print("self.self.XSSetGIndexatom_labels_dopodopo=",self.atom_labels) def onClose_section_method(self, backend, gIndex, section): if gIndex == self.XSSetGIndex and self.xstype == "TDDFT": @@ -1011,7 +853,6 @@ class ExcitingParserContext(object): self.xsTetra = section["x_exciting_xs_tetra"][0] self.xsAC = section["x_exciting_xs_tddft_analytic_continuation"][0] self.xsNAR = section["x_exciting_xs_tddft_anti_resonant_dielectric"][0] -# print("teste===",self.xsTetra) if gIndex == self.secMethodIndex: backend.addValue('electronic_structure_method', "DFT") try: @@ -1044,26 +885,6 @@ class ExcitingParserContext(object): backend.addValue('x_exciting_scf_threshold_charge_change', charge_thresh) except: pass -##########BELOW VOLUME OPTIMIZATION###################### -# if self.volumeOptIndex>1: -# self.volumeOpt = True -# optGindex = backend.openSection("section_method") -# backend.addValue("x_exciting_volume_optimization", self.volumeOpt) -# backend.closeSection("section_method", optGindex) -# -# ext_uri = [] -# backend.addValue("x_exciting_dummy", self.volumeOptIndex) -# if self.volumeOptIndex > 1: -# for j in range(1, self.volumeOptIndex): -# if (j<10): -# ext_uri.append(self.mainFilePath[0:-9] + 'rundir-0' + str(j) + '/INFO.OUT') -# else: -# ext_uri.append(self.mainFilePath[0:-9] + 'rundir-' + str(j) + '/INFO.OUT') -# for ref in ext_uri: -# refGindex = backend.openSection("section_calculation_to_calculation_refs") -# backend.addValue("calculation_to_calculation_external_url", ref) -# backend.addValue("calculation_to_calculation_kind", "source_calculation") -# backend.closeSection("section_calculation_to_calculation_refs", refGindex) mainFileDescription = \ SM(name = "root matcher", @@ -1205,6 +1026,7 @@ mainFileDescription = \ SM(r"\s*total charge in muffin-tins\s*:\s*(?P<x_exciting_total_MT_charge>[-0-9.]+)"), SM(r"\s*Estimated fundamental gap\s*:\s*(?P<x_exciting_gap__hartree>[-0-9.]+)") ]) #, +# ########### BELOW TO BE FIXED #################### # SM(name="final_forces", ## startReStr = r"\| Writing atomic positions and forces\s*\-", # startReStr = r"\s*Total atomic forces including IBS \(cartesian\) \s*:", diff --git a/parser/parser-exciting/parser_exciting_helium.py b/parser/parser-exciting/parser_exciting_lithium.py similarity index 100% rename from parser/parser-exciting/parser_exciting_helium.py rename to parser/parser-exciting/parser_exciting_lithium.py diff --git a/src/main/scala/eu/nomad_lab/parsers/ExcitingParser.scala b/src/main/scala/eu/nomad_lab/parsers/ExcitingParser.scala index 3144e20449484ca807bc4d26b9c9411a4f0790c0..6b2bfa1b8374d3a533013a38bd4d97dd90cc2426 100644 --- a/src/main/scala/eu/nomad_lab/parsers/ExcitingParser.scala +++ b/src/main/scala/eu/nomad_lab/parsers/ExcitingParser.scala @@ -47,9 +47,9 @@ object ExcitingParser extends SimpleExternalParserGenerator( "parser-exciting/exciting_parser_dos.py", "parser-exciting/exciting_parser_bandstructure.py", "parser-exciting/exciting_parser_gw.py", - "parser-exciting/exciting_parser_input.py", - "parser-exciting/exciting_parser_GS_input.py", - "parser-exciting/exciting_parser_XS_input.py", + "parser-exciting/exciting_parser_gw_input.py", + "parser-exciting/exciting_parser_gs_input.py", + "parser-exciting/exciting_parser_xs_input.py", "parser-exciting/exciting_parser_xs.py", "parser-exciting/exciting_parser_eps.py", "parser-exciting/setup_paths.py", diff --git a/src/main/scala/eu/nomad_lab/parsers/ExcitingParserHelium.scala b/src/main/scala/eu/nomad_lab/parsers/ExcitingParserLithium.scala similarity index 86% rename from src/main/scala/eu/nomad_lab/parsers/ExcitingParserHelium.scala rename to src/main/scala/eu/nomad_lab/parsers/ExcitingParserLithium.scala index cefab234e6b7ff282e108aabd19691b0b9068efc..af56fcd9da03ea5e1f690552cda83602d78f0646 100644 --- a/src/main/scala/eu/nomad_lab/parsers/ExcitingParserHelium.scala +++ b/src/main/scala/eu/nomad_lab/parsers/ExcitingParserLithium.scala @@ -21,11 +21,11 @@ import eu.nomad_lab.DefaultPythonInterpreter import org.{ json4s => jn } import scala.collection.breakOut -object ExcitingParserHelium extends SimpleExternalParserGenerator( - name = "ExcitingParserHelium", +object ExcitingParserLithium extends SimpleExternalParserGenerator( + name = "ExcitingParserLithium", parserInfo = jn.JObject( - ("name" -> jn.JString("ExcitingParserHelium")) :: - ("parserId" -> jn.JString("ExcitingParserHelium" + lab.ExcitingVersionInfo.version)) :: + ("name" -> jn.JString("ExcitingParserLithium")) :: + ("parserId" -> jn.JString("ExcitingParserLithium" + lab.ExcitingVersionInfo.version)) :: ("versionInfo" -> jn.JObject( ("nomadCoreVersion" -> jn.JObject(lab.NomadCoreVersionInfo.toMap.map { case (k, v) => k -> jn.JString(v.toString) @@ -40,11 +40,11 @@ object ExcitingParserHelium extends SimpleExternalParserGenerator( mainFileRe = """\s*\+-----------------------------------+\+\s* \s*\|\s*EXCITING\s(?<version>Lithium\s*\S*) started\s*\|\s* (?:\s*\|\sversion hash id:\s*(?<hashId>\S+)\s*\|)?""".r, - cmd = Seq(DefaultPythonInterpreter.pythonExe(), "${envDir}/parsers/exciting/parser/parser-exciting/parser_exciting_helium.py", + cmd = Seq(DefaultPythonInterpreter.pythonExe(), "${envDir}/parsers/exciting/parser/parser-exciting/parser_exciting_lithium.py", "--uri", "${mainFileUri}", "${mainFilePath}"), mainFileMatchPriority = 5, resList = Seq( - "parser-exciting/parser_exciting_helium.py", + "parser-exciting/parser_exciting_lithium.py", "parser-exciting/exciting_parser_dos.py", "parser-exciting/exciting_parser_bandstructure.py", "parser-exciting/exciting_parser_input.py", diff --git a/src/test/scala/eu/nomad_lab/parsers/ExcitingParserSpec.scala b/src/test/scala/eu/nomad_lab/parsers/ExcitingParserSpec.scala index 8f61acb8ed07a46f2a988857d48550b9b565a990..98d1df4334a7fa8004c8c0345ce439d08228e9d4 100644 --- a/src/test/scala/eu/nomad_lab/parsers/ExcitingParserSpec.scala +++ b/src/test/scala/eu/nomad_lab/parsers/ExcitingParserSpec.scala @@ -29,14 +29,14 @@ object ExcitingParserSpec extends Specification { ParserRun.parse(ExcitingParser, "parsers/exciting/test/examples/Ag/INFO.OUT", "json") must_== ParseResult.ParseSuccess } - "ExcitingParserHeliumTest" >> { + "ExcitingParserLithiumTest" >> { "test with json-events" >> { - ParserRun.parse(ExcitingParserHelium, "parsers/exciting/test/examples/lithium/INFO.OUT", "json-events") must_== ParseResult.ParseSuccess + ParserRun.parse(ExcitingParserLithium, "parsers/exciting/test/examples/lithium/INFO.OUT", "json-events") must_== ParseResult.ParseSuccess } } "test with json" >> { - ParserRun.parse(ExcitingParserHelium, "parsers/exciting/test/examples/lithium/INFO.OUT", "json") must_== ParseResult.ParseSuccess + ParserRun.parse(ExcitingParserLithium, "parsers/exciting/test/examples/lithium/INFO.OUT", "json") must_== ParseResult.ParseSuccess } "ExcitingParserTestiGW" >> {