Allow for snaphost selection without external nml
This commit is contained in:
+17
-6
@@ -52,6 +52,7 @@ class RunSelector:
|
||||
time=None,
|
||||
unit_time=None,
|
||||
allow_nodata=False,
|
||||
fallback_namelist=True,
|
||||
):
|
||||
"""
|
||||
Select runs and outputs with several filter options.
|
||||
@@ -95,11 +96,14 @@ class RunSelector:
|
||||
|
||||
self.path_in = path_in
|
||||
self.nml_filename = nml_filename
|
||||
self.fallback_nml = fallback_namelist
|
||||
self.allow_nodata = allow_nodata
|
||||
|
||||
self.namelist = {}
|
||||
self.runs = self.get_runs(in_runs, filter_name, filter_nml, sort_run_by)
|
||||
|
||||
self.allow_nodata = allow_nodata
|
||||
do_tests = (not self.fallback_nml) or (len(filter_nml) > 0)
|
||||
self.runs = self.get_runs(
|
||||
in_runs, filter_name, filter_nml, sort_run_by, do_tests=do_tests
|
||||
)
|
||||
|
||||
self.info = {}
|
||||
for run in self.runs:
|
||||
@@ -205,9 +209,10 @@ class RunSelector:
|
||||
|
||||
return selected_runs, selected_nums
|
||||
|
||||
def load_namelist(self, run):
|
||||
path_nml = f"{self.path_in}/{run}/{self.nml_filename}"
|
||||
return NamelistRecursive(f90nml.read(path_nml))
|
||||
def load_namelist(self, run, path=None):
|
||||
if path is None:
|
||||
path = f"{self.path_in}/{run}/{self.nml_filename}"
|
||||
return NamelistRecursive(f90nml.read(path))
|
||||
|
||||
def get_nml_value(self, nml_key, run):
|
||||
return self.namelist[run][nml_key]
|
||||
@@ -445,6 +450,12 @@ class RunSelector:
|
||||
else:
|
||||
nums = []
|
||||
|
||||
# Be sure we have a namelist
|
||||
if self.fallback_nml and run not in self.namelist:
|
||||
print(f"WARNING: Used fallback namelist from output {nums[0]}")
|
||||
path = f"{self.path_in}/{run}/output_{nums[0]:05}/namelist.txt"
|
||||
self.namelist[run] = self.load_namelist(run, path=path)
|
||||
|
||||
# -- Select according to time --
|
||||
if time_min is not None and len(nums) > 0:
|
||||
imin = search(nums, time_min, "right")
|
||||
|
||||
Reference in New Issue
Block a user