Example Usage¶
Once you have loaded your data, you can analyze it using all the capabilities available in xarray. Here are a few quick examples.
Land Masks¶
xmitgcm simply reads the MDS data directly for the disk; it does not attempt to
mask land points, which are usually filled with zero values. To mask land, you
can use xarray’s where
function together the the hFac
variables related
to MITgcm’s
partially filled cells.
For example, with the global_oce_latlon
dataset, an unmasked average of
salinity gives:
ds.S.mean()
>>> <xarray.DataArray 'S' ()>
array(18.85319709777832, dtype=float32)
This value is unrealistically low because it includes all of the zeros inside the land which shold be masked. To take the masked average, instead do:
ds.S.where(ds.hFacC>0).mean()
>>> <xarray.DataArray ()>
array(34.73611831665039)
This is a more correct value.
Volume Weighting¶
However, it is still not properly volume weighted. To take a volume-weighted average, you can do:
volume = ds.hFacC * ds.drF * ds.rA
(ds.S * volume).sum() / volume.sum()
>>> <xarray.DataArray ()>
array(34.779126627139945)
This represents the correct mean ocean salinity. A different land mask and volume weighting is required for variables located at the u and v points.
netCDF conversion¶
Thanks to xarray, it is trivial to convert our dataset to netCDF:
ds.to_netcdf('myfile.nc')
It can then be reloaded directly with xarray:
import xarray as xr
ds = xr.open_dataset('myfile.nc')
This is an attractive option for archiving MDS data in a self-contained way.