diff --git a/.gitignore b/.gitignore index a6cb8b615eb7a44af58c9563596ab6264ef6dbe6..914589aa5425ac7a0ad3c8863511b26c29288195 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,6 @@ TAGS lib/ env/ + +*egg-info + diff --git a/parser/wien2kparser/__init__.py b/parser/wien2kparser/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f61e055a7aa01c7cbabf0f73ed07354ba29440de --- /dev/null +++ b/parser/wien2kparser/__init__.py @@ -0,0 +1 @@ +from wien2kparser.wien2k_parser import Wien2kParser \ No newline at end of file diff --git a/parser/parser-wien2k/setup_paths.py b/parser/wien2kparser/setup_paths.py similarity index 100% rename from parser/parser-wien2k/setup_paths.py rename to parser/wien2kparser/setup_paths.py diff --git a/parser/parser-wien2k/wien2k_parser.py b/parser/wien2kparser/wien2k_parser.py similarity index 92% rename from parser/parser-wien2k/wien2k_parser.py rename to parser/wien2kparser/wien2k_parser.py index ee53b67fa8c9a943bfc281ec1241eb492af93972..640d0ce80eebd832c547261c5307d2441cc0fb77 100644 --- a/parser/parser-wien2k/wien2k_parser.py +++ b/parser/wien2kparser/wien2k_parser.py @@ -1,11 +1,11 @@ from builtins import object -import setup_paths +from wien2kparser import setup_paths import numpy as np from nomadcore.simple_parser import mainFunction, AncillaryParser, CachingLevel from nomadcore.simple_parser import SimpleMatcher as SM from nomadcore.local_meta_info import loadJsonFile, InfoKindEl import os, sys, json, logging -import wien2k_parser_struct, wien2k_parser_in0, wien2k_parser_in1c, wien2k_parser_in2c, wien2k_parser_in1, wien2k_parser_in2 +from wien2kparser import wien2k_parser_struct, wien2k_parser_in0, wien2k_parser_in1c, wien2k_parser_in2c, wien2k_parser_in1, wien2k_parser_in2 ################################################################ @@ -164,8 +164,8 @@ class Wien2kContext(object): atom_labels = section['x_wien2k_atom_name'] if atom_labels is not None: backend.addArrayValues('atom_labels', np.asarray(atom_labels)) - - + + # atom force atom_force = [] for i in ['x', 'y', 'z']: @@ -193,7 +193,7 @@ class Wien2kContext(object): def onClose_section_scf_iteration(self, backend, gIndex, section): #Trigger called when section_scf_iteration is closed. - + # count number of SCF iterations self.scfIterNr += 1 @@ -264,7 +264,7 @@ cachingLevelForMetaName = { "XC_functional_name": CachingLevel.ForwardAndCache, "energy_total": CachingLevel.ForwardAndCache - + } # loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json @@ -277,6 +277,36 @@ parserInfo = { metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"../../../../nomad-meta-info/meta_info/nomad_meta_info/wien2k.nomadmetainfo.json")) metaInfoEnv, warnings = loadJsonFile(filePath = metaInfoPath, dependencyLoader = None, extraArgsHandling = InfoKindEl.ADD_EXTRA_ARGS, uri = None) +class Wien2kParser: + """ A proper class envolop for running this parser from within python. """ + def __init__(self, backend, **kwargs): + self.backend_factory = backend + + logging.warn('something is wrong') + logger = logging.getLogger(__name__) + logger.warn(...) + + def parse(self, mainfile): + from unittest.mock import patch + # _logging.getLogger('nomadcore').setLevel(_logging.WARNING) + backend = self.backend_factory(metaInfoEnv) + with patch.object(sys, 'argv', ['<exe>', '--uri', 'nmd://uri', mainfile]): + mainFunction( + mainFileDescription, + metaInfoEnv, + parserInfo, + superContext=Wien2kContext(), + superBackend=backend) + + return backend + + + def setup_logger(self, new_logger): + if hasattr(new_logger, 'bind'): + # tell tests about received logger + new_logger.debug('received logger') + + if __name__ == "__main__": superContext = Wien2kContext() mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext = superContext) diff --git a/parser/parser-wien2k/wien2k_parser_in0.py b/parser/wien2kparser/wien2k_parser_in0.py similarity index 97% rename from parser/parser-wien2k/wien2k_parser_in0.py rename to parser/wien2kparser/wien2k_parser_in0.py index 7baa25dedbf28dfa0cea3d8c6c93e816216d7cc2..cc0629f41846b4e86c459b520ba5b104940925a2 100644 --- a/parser/parser-wien2k/wien2k_parser_in0.py +++ b/parser/wien2kparser/wien2k_parser_in0.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 @@ -88,7 +88,7 @@ class Wien2kIn0Context(object): 'XC_TPSS': ['MGGA_X_TPSS','MGGA_C_TPSS'], '46':['GGA_X_HTBS'], - 'XC_HTBS': ['GGA_X_HTBS'], + 'XC_HTBS': ['GGA_X_HTBS'], '47': ['HYB_GGA_XC_B3LYP'], 'XC_B3LYP': ['HYB_GGA_XC_B3LYP'], @@ -99,15 +99,15 @@ class Wien2kIn0Context(object): # VX_SLDA: # 52: ['-'], - # EX_SPBE: + # EX_SPBE: # VX_SPBE: # 53: ['-'], - # EX_SWC: + # EX_SWC: # VX_SWC: # 54: ['-'], - # EX_SPBESOL: + # EX_SPBESOL: # VX_SPBESOL: # 55: ['-'], @@ -149,7 +149,7 @@ def buildIn0Matchers(): 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. diff --git a/parser/parser-wien2k/wien2k_parser_in1.py b/parser/wien2kparser/wien2k_parser_in1.py similarity index 99% rename from parser/parser-wien2k/wien2k_parser_in1.py rename to parser/wien2kparser/wien2k_parser_in1.py index 05c98fa380a26f184511c1507d6ca7f51d6600d8..3e91f71d7b9faa010be939f8fae9b5f1f7b19ea2 100644 --- a/parser/parser-wien2k/wien2k_parser_in1.py +++ b/parser/wien2kparser/wien2k_parser_in1.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 diff --git a/parser/parser-wien2k/wien2k_parser_in1c.py b/parser/wien2kparser/wien2k_parser_in1c.py similarity index 99% rename from parser/parser-wien2k/wien2k_parser_in1c.py rename to parser/wien2kparser/wien2k_parser_in1c.py index c1e4ed7a7ccc9307a50a0b7528be0d47f4533b35..8334289b313205c59bd1f16f2b1d0a3644a0c743 100644 --- a/parser/parser-wien2k/wien2k_parser_in1c.py +++ b/parser/wien2kparser/wien2k_parser_in1c.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 diff --git a/parser/parser-wien2k/wien2k_parser_in2.py b/parser/wien2kparser/wien2k_parser_in2.py similarity index 98% rename from parser/parser-wien2k/wien2k_parser_in2.py rename to parser/wien2kparser/wien2k_parser_in2.py index 5ff465943817d3c66485ec292f847bed29bcc270..7174dfcd0aa565238b921bd0433a3a5496ccb9ae 100644 --- a/parser/parser-wien2k/wien2k_parser_in2.py +++ b/parser/wien2kparser/wien2k_parser_in2.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 diff --git a/parser/parser-wien2k/wien2k_parser_in2c.py b/parser/wien2kparser/wien2k_parser_in2c.py similarity index 98% rename from parser/parser-wien2k/wien2k_parser_in2c.py rename to parser/wien2kparser/wien2k_parser_in2c.py index 6c5c122b32096c74def9644071bab15778f53b7b..ba090e434f404a6d1fb3991725d1d0a0ca419c64 100644 --- a/parser/parser-wien2k/wien2k_parser_in2c.py +++ b/parser/wien2kparser/wien2k_parser_in2c.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 diff --git a/parser/parser-wien2k/wien2k_parser_struct.py b/parser/wien2kparser/wien2k_parser_struct.py similarity index 99% rename from parser/parser-wien2k/wien2k_parser_struct.py rename to parser/wien2kparser/wien2k_parser_struct.py index 1b1586ee74a646ec9e33bc36d423524d34c80710..8d669f2658fbb3a47856a07b7f8ee714343cd296 100644 --- a/parser/parser-wien2k/wien2k_parser_struct.py +++ b/parser/wien2kparser/wien2k_parser_struct.py @@ -1,5 +1,5 @@ from builtins import object -import setup_paths +from wien2kparser 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 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..f8adc8f1c7eeef1b53a60d61be00386d60d87fd1 --- /dev/null +++ b/setup.py @@ -0,0 +1,33 @@ +# Copyright 2015-2018 Lorenzo Pardini +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from setuptools import setup, find_packages + + +def main(): + setup( + name='wien2kparser', + version='0.1', + description='NOMAD parser implementation for Wien2k.', + license='APACHE 2.0', + package_dir={'': 'parser'}, + packages=find_packages('parser'), + install_requires=[ + 'nomadcore' + ], + ) + + +if __name__ == '__main__': + main()