Skip to content

Commit c42fb0e

Browse files
committed
Switch analysis scripts to open_multifile_datset
1 parent bdfbebf commit c42fb0e

File tree

5 files changed

+129
-129
lines changed

5 files changed

+129
-129
lines changed

mpas_analysis/ocean/ocean_modelvsobs.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,21 @@
1111
import matplotlib.pyplot as plt
1212
import matplotlib.colors as cols
1313

14-
import numpy as np
1514
import xarray as xr
15+
import numpy as np
1616
import datetime
17-
from netCDF4 import Dataset as netcdf_dataset
17+
import netCDF4
1818

19-
from ..shared.mpas_xarray.mpas_xarray import preprocess_mpas, \
20-
remove_repeated_time_index
2119
from ..shared.plot.plotting import plot_global_comparison
2220
from ..shared.interpolation.interpolate import interp_fields, init_tree
2321
from ..shared.constants import constants
2422

2523
from ..shared.io import NameList, StreamsFile
2624
from ..shared.io.utility import buildConfigFullPath
2725

26+
from ..shared.generalized_reader.generalized_reader \
27+
import open_multifile_dataset
28+
2829

2930
def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
3031

@@ -85,7 +86,7 @@ def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
8586
sectionName = 'regridded{}'.format(field.upper())
8687
outputTimes = config.getExpression(sectionName, 'comparisonTimes')
8788

88-
ncFile = netcdf_dataset(restartFile, mode='r')
89+
ncFile = netCDF4.Dataset(restartFile, mode='r')
8990
lonCell = ncFile.variables["lonCell"][:]
9091
latCell = ncFile.variables["latCell"][:]
9192
ncFile.close()
@@ -94,7 +95,7 @@ def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
9495

9596
if field == 'mld':
9697

97-
selvals = None
98+
iselvals = None
9899

99100
# Load MLD observational data
100101
obsFileName = "{}/holtetalley_mld_climatology.nc".format(
@@ -122,7 +123,7 @@ def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
122123

123124
elif field == 'sst':
124125

125-
selvals = {'nVertLevels': 0}
126+
iselvals = {'nVertLevels': 0}
126127

127128
obsFileName = \
128129
"{}/MODEL.SST.HAD187001-198110.OI198111-201203.nc".format(
@@ -154,7 +155,7 @@ def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
154155

155156
elif field == 'sss':
156157

157-
selvals = {'nVertLevels': 0}
158+
iselvals = {'nVertLevels': 0}
158159

159160
obsFileName = "{}/Aquarius_V3_SSS_Monthly.nc".format(
160161
observationsDirectory)
@@ -183,14 +184,15 @@ def ocn_modelvsobs(config, field, streamMap=None, variableMap=None):
183184
outFileLabel = 'sssAquarius'
184185
unitsLabel = 'PSU'
185186

186-
ds = xr.open_mfdataset(
187-
inputFiles,
188-
preprocess=lambda x: preprocess_mpas(x, yearoffset=yearOffset,
189-
timestr='Time',
190-
onlyvars=varList,
191-
selvals=selvals,
192-
varmap=variableMap))
193-
ds = remove_repeated_time_index(ds)
187+
ds = open_multifile_dataset(fileNames=inputFiles,
188+
calendar=calendar,
189+
timeVariableName='Time',
190+
variableList=varList,
191+
isel_values=iselvals,
192+
variableMap=variableMap,
193+
startDate=startDate,
194+
endDate=endDate,
195+
yearOffset=yearOffset)
194196

195197
timeStart = datetime.datetime(yearOffset+startYear, 1, 1)
196198
timeEnd = datetime.datetime(yearOffset+endYear, 12, 31)

mpas_analysis/ocean/ohc_timeseries.py

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import numpy as np
22
import netCDF4
3-
from netCDF4 import Dataset as netcdf_dataset
4-
import xarray as xr
53
import pandas as pd
64
import datetime
75

8-
from ..shared.mpas_xarray.mpas_xarray import preprocess_mpas, \
9-
remove_repeated_time_index
10-
116
from ..shared.plot.plotting import timeseries_analysis_plot
127

138
from ..shared.io import NameList, StreamsFile
149
from ..shared.io.utility import buildConfigFullPath
1510

11+
from ..shared.generalized_reader.generalized_reader \
12+
import open_multifile_dataset
13+
1614
from ..shared.timekeeping.utility import stringToDatetime, \
1715
clampToNumpyDatetime64
1816

@@ -33,7 +31,7 @@ def ohc_timeseries(config, streamMap=None, variableMap=None):
3331
to their mpas_analysis counterparts.
3432
3533
Author: Xylar Asay-Davis, Milena Veneziani
36-
Last Modified: 02/02/2017
34+
Last Modified: 02/08/2017
3735
"""
3836

3937
inDirectory = config.get('input', 'baseDirectory')
@@ -82,13 +80,13 @@ def ohc_timeseries(config, streamMap=None, variableMap=None):
8280
startDate = config.get('timeSeries', 'startDate')
8381
endDate = config.get('timeSeries', 'endDate')
8482
streamName = streams.find_stream(streamMap['timeSeriesStats'])
85-
inFiles = streams.readpath(streamName, startDate=startDate,
86-
endDate=endDate, calendar=calendar)
87-
print 'Reading files {} through {}'.format(inFiles[0], inFiles[-1])
83+
fileNames = streams.readpath(streamName, startDate=startDate,
84+
endDate=endDate, calendar=calendar)
85+
print 'Reading files {} through {}'.format(fileNames[0], fileNames[-1])
8886

8987
# Define/read in general variables
9088
print ' Read in depth and compute specific depth indexes...'
91-
ncFile = netcdf_dataset(restartFile, mode='r')
89+
ncFile = netCDF4.Dataset(restartFile, mode='r')
9290
# reference depth [m]
9391
depth = ncFile.variables['refBottomDepth'][:]
9492
# simulation start time
@@ -113,20 +111,17 @@ def ohc_timeseries(config, streamMap=None, variableMap=None):
113111
'sumLayerMaskValue',
114112
'avgLayerArea',
115113
'avgLayerThickness']
116-
ds = xr.open_mfdataset(
117-
inFiles,
118-
preprocess=lambda x: preprocess_mpas(x,
119-
yearoffset=yearOffset,
120-
timestr='Time',
121-
onlyvars=variableList,
122-
varmap=variableMap))
123-
124-
ds = remove_repeated_time_index(ds)
114+
ds = open_multifile_dataset(fileNames=fileNames,
115+
calendar=calendar,
116+
timeVariableName='Time',
117+
variableList=variableList,
118+
variableMap=variableMap,
119+
startDate=startDate,
120+
endDate=endDate,
121+
yearOffset=yearOffset)
125122

126123
timeStart = clampToNumpyDatetime64(stringToDatetime(startDate), yearOffset)
127124
timeEnd = clampToNumpyDatetime64(stringToDatetime(endDate), yearOffset)
128-
# select only the data in the specified range of years
129-
ds = ds.sel(Time=slice(timeStart, timeEnd))
130125

131126
# Select year-1 data and average it (for later computing anomalies)
132127
timeStartFirstYear = clampToNumpyDatetime64(
@@ -139,15 +134,14 @@ def ohc_timeseries(config, streamMap=None, variableMap=None):
139134
startDate=startDateFirstYear,
140135
endDate=endDateFirstYear,
141136
calendar=calendar)
142-
dsFirstYear = xr.open_mfdataset(
143-
filesFirstYear,
144-
preprocess=lambda x: preprocess_mpas(x,
145-
yearoffset=yearOffset,
146-
timestr='Time',
147-
onlyvars=variableList,
148-
varmap=variableMap))
149-
150-
dsFirstYear = remove_repeated_time_index(dsFirstYear)
137+
dsFirstYear = open_multifile_dataset(fileNames=filesFirstYear,
138+
calendar=calendar,
139+
timeVariableName='Time',
140+
variableList=variableList,
141+
variableMap=variableMap,
142+
startDate=startDateFirstYear,
143+
endDate=endDateFirstYear,
144+
yearOffset=yearOffset)
151145
firstYear += yearOffset
152146
else:
153147
dsFirstYear = ds
@@ -174,12 +168,12 @@ def ohc_timeseries(config, streamMap=None, variableMap=None):
174168

175169
if preprocessedReferenceRunName != 'None':
176170
print ' Load in OHC from preprocessed reference run...'
177-
inFilesPreprocesses = '{}/OHC.{}.year*.nc'.format(
171+
inFilesPreprocessed = '{}/OHC.{}.year*.nc'.format(
178172
preprocessedInputDirectory, preprocessedReferenceRunName)
179-
dsPreprocessed = xr.open_mfdataset(
180-
inFilesPreprocesses,
181-
preprocess=lambda x: preprocess_mpas(x, yearoffset=yearOffset))
182-
dsPreprocessed = remove_repeated_time_index(dsPreprocessed)
173+
dsPreprocessed = open_multifile_dataset(fileNames=inFilesPreprocessed,
174+
calendar=calendar,
175+
timeVariableName='xtime',
176+
yearOffset=yearOffset)
183177
yearEndPreprocessed = \
184178
(pd.to_datetime(dsPreprocessed.Time.max().values)).year
185179
if yearStart <= yearEndPreprocessed:

mpas_analysis/ocean/sst_timeseries.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import xarray as xr
21
import pandas as pd
32
import datetime
43

5-
from ..shared.mpas_xarray.mpas_xarray import preprocess_mpas, \
6-
remove_repeated_time_index
7-
84
from ..shared.plot.plotting import timeseries_analysis_plot
95

106
from ..shared.io import NameList, StreamsFile
117
from ..shared.io.utility import buildConfigFullPath
128

9+
from ..shared.generalized_reader.generalized_reader \
10+
import open_multifile_dataset
11+
1312
from ..shared.timekeeping.utility import stringToDatetime, \
1413
clampToNumpyDatetime64
1514

@@ -50,9 +49,9 @@ def sst_timeseries(config, streamMap=None, variableMap=None):
5049
startDate = config.get('timeSeries', 'startDate')
5150
endDate = config.get('timeSeries', 'endDate')
5251
streamName = streams.find_stream(streamMap['timeSeriesStats'])
53-
inFiles = streams.readpath(streamName, startDate=startDate,
54-
endDate=endDate, calendar=calendar)
55-
print 'Reading files {} through {}'.format(inFiles[0], inFiles[-1])
52+
fileNames = streams.readpath(streamName, startDate=startDate,
53+
endDate=endDate, calendar=calendar)
54+
print 'Reading files {} through {}'.format(fileNames[0], fileNames[-1])
5655

5756
mainRunName = config.get('runs', 'mainRunName')
5857
preprocessedReferenceRunName = config.get('runs',
@@ -73,13 +72,14 @@ def sst_timeseries(config, streamMap=None, variableMap=None):
7372

7473
# Load data:
7574
varList = ['avgSurfaceTemperature']
76-
ds = xr.open_mfdataset(
77-
inFiles,
78-
preprocess=lambda x: preprocess_mpas(x, yearoffset=yearOffset,
79-
timestr='Time',
80-
onlyvars=varList,
81-
varmap=variableMap))
82-
ds = remove_repeated_time_index(ds)
75+
ds = open_multifile_dataset(fileNames=fileNames,
76+
calendar=calendar,
77+
timeVariableName='Time',
78+
variableList=varList,
79+
variableMap=variableMap,
80+
startDate=startDate,
81+
endDate=endDate,
82+
yearOffset=yearOffset)
8383

8484
timeStart = clampToNumpyDatetime64(stringToDatetime(startDate), yearOffset)
8585
timeEnd = clampToNumpyDatetime64(stringToDatetime(endDate), yearOffset)
@@ -97,10 +97,10 @@ def sst_timeseries(config, streamMap=None, variableMap=None):
9797
print ' Load in SST for a preprocesses reference run...'
9898
inFilesPreprocessed = '{}/SST.{}.year*.nc'.format(
9999
preprocessedInputDirectory, preprocessedReferenceRunName)
100-
dsPreprocessed = xr.open_mfdataset(
101-
inFilesPreprocessed,
102-
preprocess=lambda x: preprocess_mpas(x, yearoffset=yearOffset))
103-
dsPreprocessed = remove_repeated_time_index(dsPreprocessed)
100+
dsPreprocessed = open_multifile_dataset(fileNames=inFilesPreprocessed,
101+
calendar=calendar,
102+
timeVariableName='xtime',
103+
yearOffset=yearOffset)
104104
yearEndPreprocessed = \
105105
(pd.to_datetime(dsPreprocessed.Time.max().values)).year
106106
if yearStart <= yearEndPreprocessed:

mpas_analysis/sea_ice/modelvsobs.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66

77
import numpy as np
88
import numpy.ma as ma
9-
import xarray as xr
109
import datetime
1110

12-
from netCDF4 import Dataset as netcdf_dataset
11+
import netCDF4
1312

14-
from ..shared.mpas_xarray.mpas_xarray import preprocess_mpas, \
15-
remove_repeated_time_index
1613
from ..shared.plot.plotting import plot_polar_comparison
1714

1815
from ..shared.io import NameList, StreamsFile
1916
from ..shared.io.utility import buildConfigFullPath
2017

18+
from ..shared.generalized_reader.generalized_reader \
19+
import open_multifile_dataset
20+
2121

2222
def seaice_modelvsobs(config, streamMap=None, variableMap=None):
2323
"""
@@ -53,9 +53,9 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
5353
startDate = config.get('climatology', 'startDate')
5454
endDate = config.get('climatology', 'endDate')
5555
streamName = streams.find_stream(streamMap['timeSeriesStats'])
56-
infiles = streams.readpath(streamName, startDate=startDate,
57-
endDate=endDate, calendar=calendar)
58-
print 'Reading files {} through {}'.format(infiles[0], infiles[-1])
56+
fileNames = streams.readpath(streamName, startDate=startDate,
57+
endDate=endDate, calendar=calendar)
58+
print 'Reading files {} through {}'.format(fileNames[0], fileNames[-1])
5959

6060
plotsDirectory = buildConfigFullPath(config, 'output', 'plotsSubdirectory')
6161

@@ -158,14 +158,15 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
158158

159159
# Load data
160160
print " Load sea-ice data..."
161-
ds = xr.open_mfdataset(
162-
infiles,
163-
preprocess=lambda x: preprocess_mpas(x, yearoffset=yearOffset,
164-
timestr='Time',
165-
onlyvars=['iceAreaCell',
166-
'iceVolumeCell'],
167-
varmap=variableMap))
168-
ds = remove_repeated_time_index(ds)
161+
ds = open_multifile_dataset(fileNames=fileNames,
162+
calendar=calendar,
163+
timeVariableName='Time',
164+
variableList=['iceAreaCell',
165+
'iceVolumeCell'],
166+
variableMap=variableMap,
167+
startDate=startDate,
168+
endDate=endDate,
169+
yearOffset=yearOffset)
169170

170171
# Compute climatologies (first motnhly and then seasonally)
171172
print " Compute seasonal climatologies..."
@@ -254,7 +255,7 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
254255
# ice concentrations
255256
fileName = "{}/{}".format(climatologyRegriddedDirectory,
256257
climatologyFiles[climName])
257-
ncFile = netcdf_dataset(fileName, mode='r')
258+
ncFile = netCDF4.Dataset(fileName, mode='r')
258259
iceConcentration = ncFile.variables["iceAreaCell"][:]
259260
if(first):
260261
lons = ncFile.variables["lon"][:]
@@ -271,7 +272,7 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
271272

272273
fileName = obsIceConcFileNames[
273274
'{}_{}'.format(climName, obsName)]
274-
ncFile = netcdf_dataset(fileName, mode='r')
275+
ncFile = netCDF4.Dataset(fileName, mode='r')
275276
obsIceConcentration = ncFile.variables["AICE"][:]
276277
ncFile.close()
277278

@@ -319,7 +320,7 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
319320
# ice concentrations
320321
fileName = "{}/{}".format(climatologyRegriddedDirectory,
321322
climatologyFiles[climName])
322-
ncFile = netcdf_dataset(fileName, mode='r')
323+
ncFile = netCDF4.Dataset(fileName, mode='r')
323324
iceThickness = ncFile.variables["iceVolumeCell"][:]
324325
ncFile.close()
325326

@@ -362,7 +363,7 @@ def seaice_modelvsobs(config, streamMap=None, variableMap=None):
362363

363364
fileName = obsIceThickFileNames['{}{}'.format(climName,
364365
hemisphere)]
365-
ncFile = netcdf_dataset(fileName, mode='r')
366+
ncFile = netCDF4.Dataset(fileName, mode='r')
366367
obsIceThickness = ncFile.variables["HI"][:]
367368
ncFile.close()
368369
# Mask thickness fields

0 commit comments

Comments
 (0)