diff --git a/parser/parser-cp2k/cp2kparser/parser.py b/parser/parser-cp2k/cp2kparser/parser.py index 74bf4b51e0d03eaf79ace82f9a438a5aeff568c7..12c22bf74391e38de72937538cdf1cca666e5f6f 100644 --- a/parser/parser-cp2k/cp2kparser/parser.py +++ b/parser/parser-cp2k/cp2kparser/parser.py @@ -153,4 +153,4 @@ class CP2KParser(ParserInterface): ) raise - self.main_parser = parser_class(self.parser_context.main_file, self.parser_context) + self.main_parser = parser_class(self.parser_context) diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py index 5b2bd274e075a61f556895ec3a4df1605bd64cb8..a7110a26d9cd8039fd52e041a1b8f5915a3032bc 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py @@ -445,8 +445,8 @@ class CP2KCommonParser(CommonParser): # If the input file is available, parse it filepath = self.file_service.get_file_by_id("input") if filepath is not None: - input_parser = CP2KInputParser(filepath, self.parser_context) - input_parser.parse() + input_parser = CP2KInputParser(self.parser_context) + input_parser.parse(filepath) else: logger.warning("The input file of the calculation could not be found.") diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py index 3c1399dd24340c79b7e8973f8d0743676709e845..ead45326cac0dc79fe61237bb127a2647080dfec 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py @@ -16,10 +16,10 @@ class CP2KGeoOptParser(MainHierarchicalParser): """Used to parse the CP2K calculation with run types: -GEO_OPT/GEOMETRY_OPTIMIZATION """ - def __init__(self, file_path, parser_context): + def __init__(self, parser_context): """ """ - super(CP2KGeoOptParser, self).__init__(file_path, parser_context) + super(CP2KGeoOptParser, self).__init__(parser_context) self.setup_common_matcher(CP2KCommonParser(parser_context)) self.traj_iterator = None self.energy_reeval_quickstep = None diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py index 65275a074b17a934bc5ee3e9e3f44c50510a4246..55049348f672c9683dc0cf210ac7b39c4cdc83c6 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py @@ -28,7 +28,7 @@ class CP2KInputParser(AbstractBaseParser): supports variables. This is currently not supported, but may be added at some point. """ - def __init__(self, file_path, parser_context): + def __init__(self, parser_context): """ Attributes: input_tree: The input structure for this version of CP2K. The @@ -38,7 +38,7 @@ class CP2KInputParser(AbstractBaseParser): variables have been stated explicitly and the additional input files have been merged. """ - super(CP2KInputParser, self).__init__(file_path, parser_context) + super(CP2KInputParser, self).__init__(parser_context) self.input_tree = None self.input_lines = None self.unit_mapping = { @@ -68,16 +68,16 @@ class CP2KInputParser(AbstractBaseParser): self.cache_service.add("traj_add_last") # self.cache_service.add("electronic_structure_method") - def parse(self): + def parse(self, filepath): #======================================================================= # Preprocess to spell out variables and to include stuff from other # files - self.preprocess_input() + self.preprocess_input(filepath) #======================================================================= # Gather the information from the input file - self.fill_input_tree(self.file_path) + self.fill_input_tree(filepath) #======================================================================= # Parse everything in the input to cp2k specific metadata @@ -459,14 +459,14 @@ class CP2KInputParser(AbstractBaseParser): input_tree_pickle_file = open(pickle_path, 'rb') self.input_tree = pickle.load(input_tree_pickle_file) - def preprocess_input(self): + def preprocess_input(self, filepath): """Preprocess the input file. Concatenate .inc files into the main input file and explicitly state all variables. """ # Read the input file into memory. It shouldn't be that big so we can # do this easily input_lines = [] - with open(self.file_path, "r") as f: + with open(filepath, "r") as f: for line in f: input_lines.append(line.strip()) @@ -477,7 +477,7 @@ class CP2KInputParser(AbstractBaseParser): if line.startswith("@INCLUDE") or line.startswith("@include"): split = line.split(None, 1) includepath = split[1] - basedir = os.path.dirname(self.file_path) + basedir = os.path.dirname(filepath) filepath = os.path.join(basedir, includepath) filepath = os.path.abspath(filepath) if not os.path.isfile(filepath): diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py index 4e126fce426709b65a3ad61941ded86f0b3ed3a6..93b25afa041d7a4c399a49c90443ce9445a9d4ba 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py @@ -18,10 +18,10 @@ class CP2KMDParser(MainHierarchicalParser): -MD -MOLECULAR_DYNAMICS """ - def __init__(self, file_path, parser_context): + def __init__(self, parser_context): """ """ - super(CP2KMDParser, self).__init__(file_path, parser_context) + super(CP2KMDParser, self).__init__(parser_context) self.setup_common_matcher(CP2KCommonParser(parser_context)) self.traj_iterator = None self.vel_iterator = None diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py index ba3b529e006756613a488d9f1b9d0c1583bc8061..403f5d2f06e14bf8fbf65570077395a1a95acbdd 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py @@ -9,13 +9,13 @@ class CP2KSinglePointForceParser(AbstractBaseParser): calculation. It is not exactly an ZYX file, so here we define separate parser. """ - def __init__(self, file_path, parser_context): - super(CP2KSinglePointForceParser, self).__init__(file_path, parser_context) + def __init__(self, parser_context): + super(CP2KSinglePointForceParser, self).__init__(parser_context) - def parse(self): + def parse(self, filepath): start = False forces = [] - with open(self.file_path) as f: + with open(filepath) as f: for line in f: if line.startswith(" # Atom"): start = True diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py index 001fc04c16f77680a2041478bc076e376133b7cd..1cf169ebac75969b004a338e716fea97f5d4fbbd 100644 --- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py +++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py @@ -13,10 +13,10 @@ class CP2KSinglePointParser(MainHierarchicalParser): -ENERGY -ENERGY_FORCE """ - def __init__(self, file_path, parser_context): + def __init__(self, parser_context): """ """ - super(CP2KSinglePointParser, self).__init__(file_path, parser_context) + super(CP2KSinglePointParser, self).__init__(parser_context) self.setup_common_matcher(CP2KCommonParser(parser_context)) #======================================================================= @@ -54,8 +54,8 @@ class CP2KSinglePointParser(MainHierarchicalParser): if section["atom_forces"] is None: force_file = self.file_service.get_file_by_id("force_file_single_point") if force_file is not None: - force_parser = CP2KSinglePointForceParser(force_file, self.parser_context) - force_parser.parse() + force_parser = CP2KSinglePointForceParser(self.parser_context) + force_parser.parse(force_file) else: logger.warning("The file containing the forces printed by ENERGY_FORCE calculation could not be found.") diff --git a/regtests/regtests.py b/regtests/regtests.py index 5da0635207c5e3a3ff6d06d8208760d6a1389945..a64149cc25603bd9442b6c28d6d0a6d714c03f6f 100644 --- a/regtests/regtests.py +++ b/regtests/regtests.py @@ -17,8 +17,8 @@ def get_result(folder, metaname=None): """ dirname = os.path.dirname(__file__) filename = os.path.join("cp2k_{}".format(VERSION), dirname, folder, "unittest.out") - parser = CP2KParser(filename, None, debug=True, log_level=logging.CRITICAL) - results = parser.parse() + parser = CP2KParser(None, debug=True, log_level=logging.CRITICAL) + results = parser.parse(filename) if metaname is None: return results @@ -32,7 +32,7 @@ class TestErrors(unittest.TestCase): def test_no_file(self): """File is not no present. """ - with self.assertRaises(IOError): + with self.assertRaises(ValueError): get_result("errors/no_file", "XC_functional") def test_invalid_file(self):