From f3bdb933cf3b59fa5d6521e6bfda97dd3e2e17b0 Mon Sep 17 00:00:00 2001 From: Johannes Schumann <johannes.schumann@fau.de> Date: Mon, 25 May 2020 21:58:06 +0200 Subject: [PATCH] Added f90nml package --- km3buu/jobcard.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/km3buu/jobcard.py b/km3buu/jobcard.py index 48285ab..7a594b3 100644 --- a/km3buu/jobcard.py +++ b/km3buu/jobcard.py @@ -12,6 +12,8 @@ __maintainer__ = "Johannes Schumann" __email__ = "jschumann@km3net.de" __status__ = "Development" +import f90nml + INPUT_PATH = "/opt/buuinput2019/" PROCESS_LOOKUP = {"cc": 2, "nc": 3, "anticc": -2, "antinc": -3} @@ -47,7 +49,7 @@ class Jobcard(object): """ def __init__(self, input_path=INPUT_PATH): self.input_path = "'%s'" % input_path - self._groups = {} + self._groups = f90nml.Namelist() self.set_property("input", "path_to_input", self.input_path) def set_property(self, group, name, value): @@ -83,6 +85,31 @@ class Jobcard(object): retval += "/\n\n" return retval + def __getitem__(self, key): + if isinstance(key, str): + if '/' in key: + k = key.split('/') + return self._groups[k[0]][k[1]] + else: + return self._groups[key] + elif isinstance(key, tuple) and len(key) == 2: + return self._groups[key[0]][key[1]] + else: + raise IndexError("Invalid access to Jobcard") + + +def read_jobcard(fpath): + """ Read a jobcard from file + + Parameters + ---------- + fpath: str + Filepath of the jobcard + """ + jc = Jobcard() + jc._groups = f90nml.read(fpath) + return jc + def generate_neutrino_jobcard_template( process, -- GitLab