diff --git a/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO b/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO new file mode 100644 index 0000000000000000000000000000000000000000..4733d8bdd5557572100ac7eaf494a6901e0193cb --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: cp2karser +Version: 0.1 +Summary: NoMaD parser implementation for CP2K +Home-page: UNKNOWN +Author: Lauri Himanen +Author-email: lauri.himanen@gmail.com +License: GPL3 +Description: UNKNOWN +Platform: UNKNOWN diff --git a/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt b/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt new file mode 100644 index 0000000000000000000000000000000000000000..c2661e988366a716a00680bad1e363601b005c86 --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt @@ -0,0 +1,10 @@ +setup.py +cp2karser.egg-info/PKG-INFO +cp2karser.egg-info/SOURCES.txt +cp2karser.egg-info/dependency_links.txt +cp2karser.egg-info/not-zip-safe +cp2karser.egg-info/requires.txt +cp2karser.egg-info/top_level.txt +cp2kparser/__init__.py +cp2kparser/__main__.py +cp2kparser/scalainterface.py \ No newline at end of file diff --git a/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt b/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe b/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/parser/parser-cp2k/cp2karser.egg-info/requires.txt b/parser/parser-cp2k/cp2karser.egg-info/requires.txt new file mode 100644 index 0000000000000000000000000000000000000000..b029f20d6692b303b91e128fc9ece5cc23f2cbd4 --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/requires.txt @@ -0,0 +1,3 @@ +pint +numpy +ase \ No newline at end of file diff --git a/parser/parser-cp2k/cp2karser.egg-info/top_level.txt b/parser/parser-cp2k/cp2karser.egg-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..220915961d0ae656de630e7f4b069eea66770a61 --- /dev/null +++ b/parser/parser-cp2k/cp2karser.egg-info/top_level.txt @@ -0,0 +1 @@ +cp2kparser diff --git a/parser/parser-cp2k/cp2kparser/__init__.py b/parser/parser-cp2k/cp2kparser/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0a1233ac13e9e49e8a3e57dea359326879e2dd0a --- /dev/null +++ b/parser/parser-cp2k/cp2kparser/__init__.py @@ -0,0 +1,2 @@ +import cp2kparser.utils.logconfig +from cp2kparser.parsing.parser import CP2KParser diff --git a/parser/parsercp2k/__main__.py b/parser/parser-cp2k/cp2kparser/__main__.py similarity index 100% rename from parser/parsercp2k/__main__.py rename to parser/parser-cp2k/cp2kparser/__main__.py diff --git a/parser/parsercp2k/parsing/__init__.py b/parser/parser-cp2k/cp2kparser/parsing/__init__.py similarity index 100% rename from parser/parsercp2k/parsing/__init__.py rename to parser/parser-cp2k/cp2kparser/parsing/__init__.py diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/__init__.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/__init__.py similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/__init__.py rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/__init__.py diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/references.html b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/references.html similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/references.html rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/references.html diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/units.html b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/units.html similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/units.html rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/units.html diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/input_tree.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/input_tree.py similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/input_tree.py rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/input_tree.py diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/xmlpreparser.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/xmlpreparser.py similarity index 100% rename from parser/parsercp2k/parsing/cp2kinputenginedata/xmlpreparser.py rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/xmlpreparser.py diff --git a/parser/parsercp2k/parsing/csvparsing.py b/parser/parser-cp2k/cp2kparser/parsing/csvparsing.py similarity index 100% rename from parser/parsercp2k/parsing/csvparsing.py rename to parser/parser-cp2k/cp2kparser/parsing/csvparsing.py diff --git a/parser/parsercp2k/parsing/implementations.py b/parser/parser-cp2k/cp2kparser/parsing/implementations.py similarity index 98% rename from parser/parsercp2k/parsing/implementations.py rename to parser/parser-cp2k/cp2kparser/parsing/implementations.py index 9ea3cf6a97cee539421e831cc0d32691e7f489b7..7c4ccc8653685763ffced302d5c375357bc2b1b9 100644 --- a/parser/parsercp2k/parsing/implementations.py +++ b/parser/parser-cp2k/cp2kparser/parsing/implementations.py @@ -1,11 +1,11 @@ import re import os import logging -from parsercp2k.parsing.csvparsing import CSVParser -from parsercp2k.parsing.inputparsing import CP2KInputParser -from parsercp2k.parsing.cp2kinputenginedata.input_tree import CP2KInput -from parsercp2k.parsing.outputparsing import * -from parsercp2k.utils.baseclasses import ParserImplementation +from cp2kparser.parsing.csvparsing import CSVParser +from cp2kparser.parsing.inputparsing import CP2KInputParser +from cp2kparser.parsing.cp2kinputenginedata.input_tree import CP2KInput +from cp2kparser.parsing.outputparsing import * +from cp2kparser.utils.baseclasses import ParserImplementation from nomadcore.coordinate_reader import CoordinateReader logger = logging.getLogger(__name__) diff --git a/parser/parsercp2k/parsing/inputparsing.py b/parser/parser-cp2k/cp2kparser/parsing/inputparsing.py similarity index 100% rename from parser/parsercp2k/parsing/inputparsing.py rename to parser/parser-cp2k/cp2kparser/parsing/inputparsing.py diff --git a/parser/parsercp2k/parsing/outputparsing.py b/parser/parser-cp2k/cp2kparser/parsing/outputparsing.py similarity index 99% rename from parser/parsercp2k/parsing/outputparsing.py rename to parser/parser-cp2k/cp2kparser/parsing/outputparsing.py index 6ae00584388515760916ba7ad5629d76c736719c..f051ef5e568de72d574067dc6ca61570e382f66d 100644 --- a/parser/parsercp2k/parsing/outputparsing.py +++ b/parser/parser-cp2k/cp2kparser/parsing/outputparsing.py @@ -204,7 +204,7 @@ class CP2KOutputParser262(object): cell[1, :] = b_comp cell[2, :] = c_comp - backend.addArrayValues("cell", cell, unit="angstrom") + backend.addArrayValues("simulation_cell", cell, unit="angstrom") # Get the number of atoms numbers = section["cp2k_section_numbers"] diff --git a/parser/parsercp2k/parser.py b/parser/parser-cp2k/cp2kparser/parsing/parser.py similarity index 88% rename from parser/parsercp2k/parser.py rename to parser/parser-cp2k/cp2kparser/parsing/parser.py index be9428e25e94078a46e24d0d3d89c6932789c1d4..36fca1009cd3f080f6356ecc9a664f8b4a972849 100644 --- a/parser/parsercp2k/parser.py +++ b/parser/parser-cp2k/cp2kparser/parsing/parser.py @@ -1,8 +1,7 @@ import re import logging -import parsercp2k.setup_paths -from parsercp2k.utils.baseclasses import Parser -from parsercp2k.parsing.implementations import * +from cp2kparser.utils.baseclasses import Parser +from cp2kparser.parsing.implementations import * logger = logging.getLogger(__name__) @@ -71,10 +70,3 @@ class CP2KParser(Parser): the nomadtoolkit. """ return "cp2k.nomadmetainfo.json" - - -#=============================================================================== -# This is what gets run when the scala layer calls for this parser -if __name__ == "__main__": - cp2kparser = CP2KParser() - cp2kparser.scala_main_function() diff --git a/parser/parser-cp2k/cp2kparser/scalainterface.py b/parser/parser-cp2k/cp2kparser/scalainterface.py new file mode 100644 index 0000000000000000000000000000000000000000..bbb946a7101cae8e7689a95c57810b9e50225d56 --- /dev/null +++ b/parser/parser-cp2k/cp2kparser/scalainterface.py @@ -0,0 +1,37 @@ +""" +This is the access point to the parser for the scala layer in the nomad project. +""" +import os +from cp2kparser import CP2KParser +from nomadcore.local_meta_info import loadJsonFile, InfoKindEl +from nomadcore.simple_parser import mainFunction + +# This is what gets run when the scala layer calls for this parser. Currently +# only the outputparser is used because the scala layer doesn't support +# auxiliary files. Also the version identification is skipped and the structure +# used in CP2K 2.6.2 is assumed. +if __name__ == "__main__": + cp2kparser = CP2KParser() + + # Get the outputparser class + outputparser = globals()["CP2KOutputParser{}".format("262")](None, None) + + # Setup the metainfos + metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../../nomad-meta-info/meta_info/nomad_meta_info/{}".format(cp2kparser.get_metainfo_filename()))) + metaInfoEnv, warnings = loadJsonFile(filePath=metaInfoPath, dependencyLoader=None, extraArgsHandling=InfoKindEl.ADD_EXTRA_ARGS, uri=None) + + # Parser info + parserInfo = {'name': 'cp2k-parser', 'version': '1.0'} + + # Adjust caching of metadata + cachingLevelForMetaName = outputparser.cachingLevelForMetaName + + # Supercontext is where the objet where the callback functions for + # section closing are found + superContext = outputparser + + # Main file description is the SimpleParser tree + mainFileDescription = outputparser.outputstructure + + # Use the main function from nomadcore + mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext=superContext, cachingLevelForMetaName=cachingLevelForMetaName, onClose={}) diff --git a/parser/parsercp2k/utils/__init__.py b/parser/parser-cp2k/cp2kparser/utils/__init__.py similarity index 100% rename from parser/parsercp2k/utils/__init__.py rename to parser/parser-cp2k/cp2kparser/utils/__init__.py diff --git a/parser/parsercp2k/utils/baseclasses.py b/parser/parser-cp2k/cp2kparser/utils/baseclasses.py similarity index 89% rename from parser/parsercp2k/utils/baseclasses.py rename to parser/parser-cp2k/cp2kparser/utils/baseclasses.py index c6a5450825438e26f303ca1473fab7c9f4454cdf..34aff6e42ad72334dd69cb042765d400ed20e9fc 100644 --- a/parser/parsercp2k/utils/baseclasses.py +++ b/parser/parser-cp2k/cp2kparser/utils/baseclasses.py @@ -3,11 +3,8 @@ import sys import logging import StringIO from abc import ABCMeta, abstractmethod -from parsercp2k.parsing.outputparsing import * from nomadcore.simple_parser import SimpleParserBuilder, defaultParseFile, extractOnCloseTriggers -from nomadcore.local_meta_info import loadJsonFile, InfoKindEl from nomadcore.caching_backend import CachingLevel, ActiveBackend -from nomadcore.simple_parser import mainFunction logger = logging.getLogger(__name__) @@ -16,8 +13,11 @@ class Parser(object): """A base class for nomad parsers. Attributes: - self.implementation: an object that actually does the parsing and is + implementation: an object that actually does the parsing and is setup by this class based on the given contents. + parser_context: A wrapper class for all the parser related information. + This is contructed here and then passed onto the different + implementations. """ __metaclass__ = ABCMeta parser_name = None @@ -97,39 +97,12 @@ class Parser(object): logger.error("No parser implementation has been setup.") # Write the starting bracket - self.backend.fileOut.write("[") + self.implementation.backend.fileOut.write("[") self.implementation.parse() # Write the ending bracket - self.backend.fileOut.write("]\n") - - def scala_main_function(self): - """This function gets called when the scala calls for a parser. - """ - - # Get the outputparser class - outputparser = globals()["CP2KOutputParser{}".format("262")](None, None) - - # Setup the metainfos - metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../../nomad-meta-info/meta_info/nomad_meta_info/{}".format(self.get_metainfo_filename()))) - metaInfoEnv, warnings = loadJsonFile(filePath=metaInfoPath, dependencyLoader=None, extraArgsHandling=InfoKindEl.ADD_EXTRA_ARGS, uri=None) - - # Parser info - parserInfo = {'name': 'cp2k-parser', 'version': '1.0'} - - # Adjust caching of metadata - cachingLevelForMetaName = outputparser.cachingLevelForMetaName - - # Supercontext is where the objet where the callback functions for - # section closing are found - superContext = outputparser - - # Main file description is the SimpleParser tree - mainFileDescription = outputparser.outputstructure - - # Use the main function from nomadcore - mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext=superContext, cachingLevelForMetaName=cachingLevelForMetaName, onClose={}) + self.implementation.backend.fileOut.write("]\n") #=============================================================================== diff --git a/parser/parsercp2k/utils/logconfig.py b/parser/parser-cp2k/cp2kparser/utils/logconfig.py similarity index 100% rename from parser/parsercp2k/utils/logconfig.py rename to parser/parser-cp2k/cp2kparser/utils/logconfig.py diff --git a/parser/parsercp2k/utils/testing.py b/parser/parser-cp2k/cp2kparser/utils/testing.py similarity index 100% rename from parser/parsercp2k/utils/testing.py rename to parser/parser-cp2k/cp2kparser/utils/testing.py diff --git a/parser/setup.py b/parser/parser-cp2k/setup.py similarity index 91% rename from parser/setup.py rename to parser/parser-cp2k/setup.py index 4282820cf99ac1d15b3935b5b2155c6275c0434d..03a5a1dec528a2f0155384f86e0d5e090cab80ea 100644 --- a/parser/setup.py +++ b/parser/parser-cp2k/setup.py @@ -5,7 +5,7 @@ from setuptools import setup, find_packages def main(): # Start package setup setup( - name="parsercp2k", + name="cp2karser", version="0.1", include_package_data=True, package_data={ @@ -15,7 +15,7 @@ def main(): author="Lauri Himanen", author_email="lauri.himanen@gmail.com", license="GPL3", - packages=["parsercp2k"], + packages=["cp2kparser"], install_requires=[ 'pint', 'numpy', diff --git a/parser/parsercp2k/__init__.py b/parser/parsercp2k/__init__.py deleted file mode 100644 index 26705c5913af466df6a00563f5e0b30f72ff853c..0000000000000000000000000000000000000000 --- a/parser/parsercp2k/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -import parsercp2k.utils.logconfig -from parsercp2k.parser import CP2KParser diff --git a/parser/parsercp2k/parsing/autoparser.py b/parser/parsercp2k/parsing/autoparser.py deleted file mode 100644 index bebecb473bc20c15284aed8e83cb140f5d4f58d8..0000000000000000000000000000000000000000 --- a/parser/parsercp2k/parsing/autoparser.py +++ /dev/null @@ -1,26 +0,0 @@ -import sys -import os -import cStringIO -from parsercp2k.implementation.cp2kparserversioner import CP2KParserVersioner -from parsercp2k.generics.testing import get_parser - - -#=============================================================================== -def parse_path(path, metainfo_to_keep=[], metainfo_to_skip=[], dump=False): - """Generates a cp2k parser using the tools defined in testing.py and parses - the contents in the given path - """ - # If a dump is requested, the results will be saved to a file under the - # current folder - if dump: - stream = cStringIO.StringIO() - else: - stream = sys.stdout - parserbuilder = CP2KParserVersioner - metainfopath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../nomad-meta-info/meta_info/nomad_meta_info/cp2k.nomadmetainfo.json")) - parser = get_parser(path, metainfopath, parserbuilder, metainfo_to_keep, metainfo_to_skip, stream) - parser.parse() - - if dump: - outputfile = open(path + "/parseroutput.json", "w") - outputfile.write(stream.getvalue()) diff --git a/parser/parsercp2k/setup_paths.py b/parser/parsercp2k/setup_paths.py deleted file mode 100644 index 89200e03930e073d5e934adb59df608663d89629..0000000000000000000000000000000000000000 --- a/parser/parsercp2k/setup_paths.py +++ /dev/null @@ -1,8 +0,0 @@ -import sys -import os -baseDir = os.path.dirname(os.path.abspath(__file__)) -commonDir = os.path.normpath(os.path.join(baseDir, "../../../../python-common/common/python")) - -if os.path.exists(commonDir): - if not commonDir in sys.path: - sys.path.insert(0, commonDir)