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