From 6cdaccbe0951af5bd93e4e2570a73f71bcff6f17 Mon Sep 17 00:00:00 2001 From: Daria Tomecka <zarvok79@yahoo.com> Date: Sat, 3 Sep 2016 03:18:51 +0200 Subject: [PATCH] wien2k: parse density for atom xx at the nucleus (first radial mesh point) :RTO, :CHA, CHAxxx --- parser/parser-wien2k/wien2k_parser.py | 4 ++ .../wien2k_parser_in0.py | 69 +++++++++++++++++++ .../wien2k_parser_in1.py | 69 +++++++++++++++++++ .../wien2k_parser_in1c.py | 69 +++++++++++++++++++ .../wien2k_parser_in2.py | 69 +++++++++++++++++++ .../wien2k_parser_in2c.py | 57 +++++++++++++++ 6 files changed, 337 insertions(+) create mode 100644 parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in0.py create mode 100644 parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1.py create mode 100644 parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1c.py create mode 100644 parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2.py create mode 100644 parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2c.py diff --git a/parser/parser-wien2k/wien2k_parser.py b/parser/parser-wien2k/wien2k_parser.py index bec43c3..76e8eb6 100644 --- a/parser/parser-wien2k/wien2k_parser.py +++ b/parser/parser-wien2k/wien2k_parser.py @@ -148,15 +148,19 @@ mainFileDescription = SM( SM(r":NOE\s*:\s*NUMBER\sOF\sELECTRONS\s*=\s*(?P<x_wien2k_noe>[0-9.]+)"), SM(r":FER\s*:\s(\w*\s*)*-\s\w*\W\w*\WM\W*=\s*(?P<x_wien2k_fermi_ene>[-+0-9.]+)"), SM(r":GMA\s*:\s*POTENTIAL\sAND\sCHARGE\sCUT-OFF\s*[0-9.]+\s*Ry\W\W[0-9.]+"), + SM(r":CHA(?P<x_wien2k_atom_nr>[-+0-9]+):\s*TOTAL\s*\w*\s*CHARGE INSIDE SPHERE\s*(?P<x_wien2k_sphere_nr>[-+0-9]+)\s*=\s*(?P<x_wien2k_tot_val_charge_sphere>[0-9.]+)",repeats = True), + SM(r":CHA\s*:\s*TOTAL\s*\w*\s*CHARGE INSIDE\s*\w*\s*CELL\s=\s*(?P<x_wien2k_tot_val_charge_cell>[-+0-9.]+)"), SM(r":MMTOT: TOTAL MAGNETIC MOMENT IN CELL =\s*(?P<x_wien2k_mmtot>[-+0-9.]+)"), SM(r":MMINT: MAGNETIC MOMENT IN INTERSTITIAL =\s*(?P<x_wien2k_mmint>[-+0-9.]+)"), SM(r":MMI001: MAGNETIC MOMENT IN SPHERE 1 =\s*(?P<x_wien2k_mmi001>[-+0-9.]+)"), + SM(r":RTO(?P<x_wien2k_atom_nr>[-+0-9]+)\s*:\s*[0-9]+\s*(?P<x_wien2k_density_at_nucleus_valence>[-+0-9.]+)\s*(?P<x_wien2k_density_at_nucleus_semicore>[-+0-9.]+)\s*(?P<x_wien2k_density_at_nucleus_core>[-+0-9.]+)\s*(?P<x_wien2k_density_at_nucleus_tot>[0-9.]+)",repeats = True), SM(r":NTO\s*:\s*\sTOTAL\s*INTERSTITIAL\s*CHARGE=\s*(?P<x_wien2k_tot_int_charge_nm>[-+0-9.]+)"), SM(r":NTO(?P<x_wien2k_atom_nr>[-+0-9]+)[0-9]*:\s*\sTOTAL\s*CHARGE\s*IN\s*SPHERE\s*(?P<x_wien2k_sphere_nr>[-+0-9]+)\s*=\s*(?P<x_wien2k_tot_charge_in_sphere_nm>[-+0-9.]+)",repeats = True), SM(r":DTO(?P<x_wien2k_atom_nr>[-+0-9]+)[0-9]*:\sTOTAL\s*DIFFERENCE\s*CHARGE\W*\w*\s*IN\s*SPHERE\s*(?P<x_wien2k_sphere_nr>[-+0-9]+)\s*=\s*(?P<x_wien2k_tot_diff_charge>[-+0-9.]+)", repeats = True), SM(r":DIS\s*:\s*CHARGE\sDISTANCE\s*\W*[0-9.]+\sfor\satom\s*[0-9]*\sspin\s[0-9]*\W\s*(?P<x_wien2k_charge_distance>[0-9.]+)"), SM(r":CTO\s*:\s*\sTOTAL\s*INTERSTITIAL\s*CHARGE=\s*(?P<x_wien2k_tot_int_charge>[-+0-9.]+)"), SM(r":CTO(?P<x_wien2k_atom_nr>[-+0-9]+)[0-9]*:\s*\sTOTAL\s*CHARGE\s*IN\s*SPHERE\s*(?P<x_wien2k_sphere_nr>[-+0-9]+)\s*=\s*(?P<x_wien2k_tot_charge_in_sphere>[-+0-9.]+)",repeats = True), +# SM(r":NEC(?P<x_wien2k_necnr>[-+0-9]+)\s*:\s*NUCLEAR AND ELECTRONIC CHARGE\s*(?P<x_wien2k_nuclear_charge>[-+0-9.]+)\s*(?P<x_wien2k_electronic_charge>[0-9.]+)",repeats = True), SM(r":ENE\s*:\s*\W*\w*\W*\s*TOTAL\s*ENERGY\s*IN\s*Ry\s*=\s*(?P<energy_total>[-+0-9.]+)"), SM(r":FOR[0-9]*:\s*(?P<x_wien2k_atom_nr>[0-9]+).ATOM\s*(?P<x_wien2k_for_abs>[0-9.]+)\s*(?P<x_wien2k_for_x>[-++0-9.]+)\s*(?P<x_wien2k_for_y>[-+0-9.]+)\s*(?P<x_wien2k_for_z>[-+0-9.]+)\s*partial\sforces", repeats = True), SM(r":FGL[0-9]*:\s*(?P<x_wien2k_atom_nr>[0-9]+).ATOM\s*(?P<x_wien2k_for_x_gl>[-+0-9.]+)\s*(?P<x_wien2k_for_y_gl>[-+0-9.]+)\s*(?P<x_wien2k_for_z_gl>[-+0-9.]+)\s*partial\sforces", repeats = True) diff --git a/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in0.py b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in0.py new file mode 100644 index 0000000..b602d6a --- /dev/null +++ b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in0.py @@ -0,0 +1,69 @@ +from builtins import object +import setup_paths +from nomadcore.simple_parser import mainFunction, CachingLevel +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +import os, sys, json + +class Wien2kIn0Context(object): + """context for wien2k struct parser""" + + def __init__(self): + self.parser = None + + def initialize_values(self): + """allows to reset values if the same superContext is used to parse different files""" + 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() + + +# description of the input +def buildIn0Matchers(): + return SM( + name = 'root', + weak = True, + startReStr = "", + sections = ["section_run", "section_method"], + subMatchers = [ +# SM(name = 'systemName', +# startReStr = r"(?P<x_wien2k_system_nameIn>.*)"), + SM(r"(?P<x_wien2k_switch>\w*)\s*(?P<x_wien2k_indxc>[0-9]+)\s*.*"), + SM(r"\s*(?P<x_wien2k_ifft_x>[0-9]+)\s*(?P<x_wien2k_ifft_y>[0-9]+)\s*(?P<x_wien2k_ifft_z>[0-9]+)\s*(?P<x_wien2k_ifft_factor>[0-9.]+)\s*(?P<x_wien2k_iprint>[0-9]+).*") +# SM(r"(?P<x_wien2k_calc_mode>.*)"), +# SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"), +# SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True, +# sections=["x_wien2k_section_equiv_atoms"], +# subMatchers=[ +# SM(r"\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True +# ), +# SM(r"\s*(?P<x_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_wien2k_NPT>[0-9]+)\s*R0=(?P<x_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_wien2k_atomic_number_Z>[0-9.]+)",) +# ] +# ) + ]) + +def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl): + """Sets the caching level for the metadata. + + Args: + metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py. + CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation. + This allows to run the parser without opening new sections. + + Returns: + Dictionary with metaname as key and caching level as value. + """ + # manually adjust caching of metadata + cachingLevelForMetaName = { + 'section_run': CachingLvl, + 'section_method': CachingLvl + } + return cachingLevelForMetaName + +# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json diff --git a/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1.py b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1.py new file mode 100644 index 0000000..ab4a58b --- /dev/null +++ b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1.py @@ -0,0 +1,69 @@ +from builtins import object +import setup_paths +from nomadcore.simple_parser import mainFunction, CachingLevel +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +import os, sys, json + +class Wien2kIn1Context(object): + """context for wien2k struct parser""" + + def __init__(self): + self.parser = None + + def initialize_values(self): + """allows to reset values if the same superContext is used to parse different files""" + 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() + + +# description of the input +def buildIn1Matchers(): + return SM( + name = 'root', + weak = True, + startReStr = "", + sections = ["section_run", "section_method"], + subMatchers = [ +# SM(name = 'systemName', +# startReStr = r"(?P<x_wien2k_system_nameIn>.*)"), + SM(r"\s*(?P<x_wien2k_wf_switch>[\w*]+)\s*EF=[-+.0-9]*\s*\W*WFFIL, WFPRI, ENFIL, SUPWF\W"), + SM(r"\s*(?P<x_wien2k_rkmax>[0-9.]+)\s*[0-9]+\s*[0-9]+\s*\WR-..\WK-...; MAX \w*.*") +# SM(r"(?P<x_wien2k_calc_mode>.*)"), +# SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"), +# SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True, +# sections=["x_wien2k_section_equiv_atoms"], +# subMatchers=[ +# SM(r"\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True +# ), +# SM(r"\s*(?P<x_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_wien2k_NPT>[0-9]+)\s*R0=(?P<x_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_wien2k_atomic_number_Z>[0-9.]+)",) +# ] +# ) + ]) + +def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl): + """Sets the caching level for the metadata. + + Args: + metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py. + CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation. + This allows to run the parser without opening new sections. + + Returns: + Dictionary with metaname as key and caching level as value. + """ + # manually adjust caching of metadata + cachingLevelForMetaName = { + 'section_run': CachingLvl, + 'section_method': CachingLvl + } + return cachingLevelForMetaName + +# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json diff --git a/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1c.py b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1c.py new file mode 100644 index 0000000..218e775 --- /dev/null +++ b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in1c.py @@ -0,0 +1,69 @@ +from builtins import object +import setup_paths +from nomadcore.simple_parser import mainFunction, CachingLevel +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +import os, sys, json + +class Wien2kIn1cContext(object): + """context for wien2k struct parser""" + + def __init__(self): + self.parser = None + + def initialize_values(self): + """allows to reset values if the same superContext is used to parse different files""" + 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() + + +# description of the input +def buildIn1cMatchers(): + return SM( + name = 'root', + weak = True, + startReStr = "", + sections = ["section_run", "section_method"], + subMatchers = [ +# SM(name = 'systemName', +# startReStr = r"(?P<x_wien2k_system_nameIn>.*)"), + SM(r"\s*(?P<x_wien2k_wf_switch>[\w*]+)\s*EF=[-+.0-9]*\s*\W*WFFIL, WFPRI, ENFIL, SUPWF\W"), + SM(r"\s*(?P<x_wien2k_rkmax>[0-9.]+)\s*[0-9]+\s*[0-9]+\s*\WR-..\WK-...; MAX \w*.*") +# SM(r"(?P<x_wien2k_calc_mode>.*)"), +# SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"), +# SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True, +# sections=["x_wien2k_section_equiv_atoms"], +# subMatchers=[ +# SM(r"\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True +# ), +# SM(r"\s*(?P<x_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_wien2k_NPT>[0-9]+)\s*R0=(?P<x_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_wien2k_atomic_number_Z>[0-9.]+)",) +# ] +# ) + ]) + +def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl): + """Sets the caching level for the metadata. + + Args: + metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py. + CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation. + This allows to run the parser without opening new sections. + + Returns: + Dictionary with metaname as key and caching level as value. + """ + # manually adjust caching of metadata + cachingLevelForMetaName = { + 'section_run': CachingLvl, + 'section_method': CachingLvl + } + return cachingLevelForMetaName + +# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json diff --git a/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2.py b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2.py new file mode 100644 index 0000000..947daf5 --- /dev/null +++ b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2.py @@ -0,0 +1,69 @@ +from builtins import object +import setup_paths +from nomadcore.simple_parser import mainFunction, CachingLevel +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +import os, sys, json + +class Wien2kIn2Context(object): + """context for wien2k struct parser""" + + def __init__(self): + self.parser = None + + def initialize_values(self): + """allows to reset values if the same superContext is used to parse different files""" + 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() + + +# description of the input +def buildIn2Matchers(): + return SM( + name = 'root', + weak = True, + startReStr = "", + sections = ["section_run", "section_method"], + subMatchers = [ +# SM(name = 'systemName', +# startReStr = r"(?P<x_wien2k_system_nameIn>.*)"), + SM(r"\s*(?P<x_wien2k_in2c_switch>[A-Z]+)\s*.*") +# SM(r"\s*(?P<x_wien2k_rkmax>[0-9.]+)\s*[0-9]+\s*[0-9]+\s*\WR-..\WK-...; MAX \w*.*") +# SM(r"(?P<x_wien2k_calc_mode>.*)"), +# SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"), +# SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True, +# sections=["x_wien2k_section_equiv_atoms"], +# subMatchers=[ +# SM(r"\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)", +# repeats=True +# ), +# SM(r"\s*(?P<x_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_wien2k_NPT>[0-9]+)\s*R0=(?P<x_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_wien2k_atomic_number_Z>[0-9.]+)",) +# ] +# ) + ]) + +def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl): + """Sets the caching level for the metadata. + + Args: + metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py. + CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation. + This allows to run the parser without opening new sections. + + Returns: + Dictionary with metaname as key and caching level as value. + """ + # manually adjust caching of metadata + cachingLevelForMetaName = { + 'section_run': CachingLvl, + 'section_method': CachingLvl + } + return cachingLevelForMetaName + +# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json diff --git a/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2c.py b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2c.py new file mode 100644 index 0000000..4d0d171 --- /dev/null +++ b/parser/parser-wien2k/wien2k_parser_backups/wien2k_parser_in2c.py @@ -0,0 +1,57 @@ +from builtins import object +import setup_paths +from nomadcore.simple_parser import mainFunction, CachingLevel +from nomadcore.simple_parser import SimpleMatcher as SM +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +import os, sys, json + +class Wien2kIn2cContext(object): + """context for wien2k struct parser""" + + def __init__(self): + self.parser = None + + def initialize_values(self): + """allows to reset values if the same superContext is used to parse different files""" + 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() + + +# description of the input +def buildIn2cMatchers(): + return SM( + name = 'root', + weak = True, + startReStr = "", + sections = ["section_run", "section_method"], + subMatchers = [ + SM(r"\s*(?P<x_wien2k_in2c_switch>[A-Z]+)\s*.*"), + SM(r"\s*(?P<x_wien2k_in2c_emin>[-+0-9.]+)\s*(?P<x_wien2k_in2c_ne>[-+0-9.]+)\s*(?P<x_wien2k_in2c_espermin>[-+0-9.]+)\s*(?P<x_wien2k_in2c_esper0>[-+0-9.]+)\s*.*"), + SM(r"\s*(?P<smearing_kind>[A-Z]+)\s*\s*(?P<smearing_width>[-+0-9.]+)\s*.*"), + SM(r"\s*(?P<x_wien2k_in2c_gmax>[-+0-9.]+)\s*GMAX") + ]) + +def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl): + """Sets the caching level for the metadata. + + Args: + metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py. + CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation. + This allows to run the parser without opening new sections. + + Returns: + Dictionary with metaname as key and caching level as value. + """ + # manually adjust caching of metadata + cachingLevelForMetaName = { + 'section_run': CachingLvl, + 'section_method': CachingLvl + } + return cachingLevelForMetaName + +# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json -- GitLab