Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 42 additions & 27 deletions mpas_analysis/shared/time_series/mpas_time_series_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ def _update_time_series_bounds_from_file_names(self): # {{{

if startYear != requestedStartYear or endYear != requestedEndYear:
print("Warning: {} start and/or end year different from "
"requested\n" \
"requestd: {:04d}-{:04d}\n" \
"requested\n"
"requestd: {:04d}-{:04d}\n"
"actual: {:04d}-{:04d}\n".format(section,
requestedStartYear,
requestedEndYear,
Expand Down Expand Up @@ -275,33 +275,48 @@ def _compute_time_series_with_ncrcat(self):
'Note: this presumes use of the conda-forge '
'channel.')

inputFiles = self.inputFiles
if os.path.exists(self.outputFile):
# add only input files wiht times that aren't already in the
# output file
dates = sorted([fileName[-13:-6] for fileName in self.inputFiles])
inYears = numpy.array([int(date[0:4]) for date in dates])
inMonths = numpy.array([int(date[5:7]) for date in dates])
totalMonths = 12*inYears + inMonths

# make sure all the necessary variables are also present
with xr.open_dataset(self.outputFile) as ds:
dates = [bytes.decode(name) for name in
ds.xtime_startMonthly.values]
lastDate = dates[-1]

lastYear = int(lastDate[0:4])
lastMonth = int(lastDate[5:7])
lastTotalMonths = 12*lastYear + lastMonth

inputFiles = []
for index, inputFile in enumerate(self.inputFiles):
if totalMonths[index] > lastTotalMonths:
inputFiles.append(inputFile)

if len(inputFiles) == 0:
# nothing to do
return
else:
inputFiles = self.inputFiles
updateSubset = True
for variableName in self.variableList:
if variableName not in ds.variables:
updateSubset = False
break

if updateSubset:
# add only input files wiht times that aren't already in
# the output file
dates = sorted([fileName[-13:-6] for fileName in
self.inputFiles])
inYears = numpy.array([int(date[0:4]) for date in dates])
inMonths = numpy.array([int(date[5:7]) for date in dates])
totalMonths = 12*inYears + inMonths

dates = [bytes.decode(name) for name in
ds.xtime_startMonthly.values]
lastDate = dates[-1]

lastYear = int(lastDate[0:4])
lastMonth = int(lastDate[5:7])
lastTotalMonths = 12*lastYear + lastMonth

inputFiles = []
for index, inputFile in enumerate(self.inputFiles):
if totalMonths[index] > lastTotalMonths:
inputFiles.append(inputFile)

if len(inputFiles) == 0:
# nothing to do
return
else:
# there is an output file but it has the wrong variables
# so we need ot delete it.
self.logger.warning('Warning: deleting file {} because '
'some variables were missing'.format(
self.outputFile))
os.remove(self.outputFile)

variableList = self.variableList + ['xtime_startMonthly',
'xtime_endMonthly']
Expand Down