Skip to content

Commit eb25e77

Browse files
committed
Add support for lists of masks for the conda-package cell culler
1 parent 4efecfc commit eb25e77

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

conda_package/mpas_tools/conversion.py

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,21 @@ def cull(dsIn, dsMask=None, dsInverse=None, dsPreserve=None,
7070
7171
Parameters
7272
----------
73-
dsIn : ``xarray.Dataset``, optional
73+
dsIn : ``xarray.Dataset``
7474
A data set to cull, possibly with a ``cullCell`` field set to one where
7575
cells should be removed
7676
77-
dsMask : ``xarray.Dataset``, optional
78-
A data set with region masks that are 1 where cells should be culled
77+
dsMask : ``xarray.Dataset`` or list, optional
78+
A data set (or data sets) with region masks that are 1 where cells
79+
should be culled
7980
80-
dsInverse : ``xarray.Dataset``, optional
81-
A data set with region masks that are 0 where cells should be culled
81+
dsInverse : ``xarray.Dataset`` or list, optional
82+
A data set (or data sets) with region masks that are 0 where cells
83+
should be culled
8284
83-
dsPreserve : ``xarray.Dataset``, optional
84-
A data set with region masks that are 1 where cells should *not* be
85-
culled
85+
dsPreserve : ``xarray.Dataset`` or list, optional
86+
A data set (or data sets) with region masks that are 1 where cells
87+
should *not* be culled
8688
8789
graphInfoFileName : str, optional
8890
A file path (relative or absolute) where the graph file (typically
@@ -104,19 +106,28 @@ def cull(dsIn, dsMask=None, dsInverse=None, dsPreserve=None,
104106
args = ['MpasCellCuller.x', inFileName, outFileName]
105107

106108
if dsMask is not None:
107-
fileName = '{}/mask.nc'.format(tempdir)
108-
write_netcdf(dsMask, fileName)
109-
args.extend(['-m', fileName])
109+
if not isinstance(dsMask, list):
110+
dsMask = [dsMask]
111+
for index, ds in enumerate(dsMask):
112+
fileName = '{}/mask{}.nc'.format(tempdir, index)
113+
write_netcdf(ds, fileName)
114+
args.extend(['-m', fileName])
110115

111116
if dsInverse is not None:
112-
fileName = '{}/inverse.nc'.format(tempdir)
113-
write_netcdf(dsInverse, fileName)
114-
args.extend(['-i', fileName])
117+
if not isinstance(dsInverse, list):
118+
dsInverse = [dsInverse]
119+
for index, ds in enumerate(dsInverse):
120+
fileName = '{}/inverse{}.nc'.format(tempdir, index)
121+
write_netcdf(ds, fileName)
122+
args.extend(['-i', fileName])
115123

116124
if dsPreserve is not None:
117-
fileName = '{}/preserve.nc'.format(tempdir)
118-
write_netcdf(dsPreserve, fileName)
119-
args.extend(['-p', fileName])
125+
if not isinstance(dsPreserve, list):
126+
dsPreserve = [dsPreserve]
127+
for index, ds in enumerate(dsPreserve):
128+
fileName = '{}/preserve{}.nc'.format(tempdir, index)
129+
write_netcdf(ds, fileName)
130+
args.extend(['-p', fileName])
120131

121132
# go into the directory of the output file so the graph.info file ends
122133
# up in the same place
@@ -189,4 +200,4 @@ def mask(dsMesh, fcMask=None, fcSeed=None, positiveLon=False):
189200
dsOut = xarray.open_dataset(outFileName)
190201
dsOut.load()
191202

192-
return dsOut
203+
return dsOut

0 commit comments

Comments
 (0)