@@ -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