Quick Start

First make sure you understand what an xarray Dataset object is. Then find some MITgcm MDS data. If you don’t have any data of your own, you can download the xmitgcm test repositories To download the some test data, run the shell commands:

$ curl -L -J -O https://ndownloader.figshare.com/files/6494718
$ tar -xvzf global_oce_latlon.tar.gz

This will create a directory called global_oce_latlon which we will use for the rest of these examples. If you have your own data, replace this with the path to your mitgcm files.

To opean MITgcm MDS data as an xarray.Dataset, do the following in python:

from xmitgcm import open_mdsdataset
data_dir = './global_oce_latlon'
ds = open_mdsdataset(data_dir)
# display the contents of the Dataset
print(ds)
>>> <xarray.Dataset>
Dimensions:               (XC: 90, XG: 90, YC: 40, YG: 40, Z: 15, Zl: 15, Zp1: 16, Zu: 15, layer_1RHO_bounds: 31, layer_1RHO_center: 30, layer_1RHO_interface: 29, time: 1)
Coordinates:
    iter                  (time) int64 39600
  * time                  (time) int64 39600
  * XC                    (XC) >f4 2.0 6.0 10.0 14.0 18.0 22.0 26.0 30.0 ...
  * YC                    (YC) >f4 -78.0 -74.0 -70.0 -66.0 -62.0 -58.0 -54.0 ...
  * XG                    (XG) >f4 0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0 32.0 ...
  * YG                    (YG) >f4 -80.0 -76.0 -72.0 -68.0 -64.0 -60.0 -56.0 ...
  * Zl                    (Zl) >f4 0.0 -50.0 -120.0 -220.0 -360.0 -550.0 ...
  * Zu                    (Zu) >f4 -50.0 -120.0 -220.0 -360.0 -550.0 -790.0 ...
  * Z                     (Z) >f4 -25.0 -85.0 -170.0 -290.0 -455.0 -670.0 ...
  * Zp1                   (Zp1) >f4 0.0 -50.0 -120.0 -220.0 -360.0 -550.0 ...
    dxC                   (YC, XG) >f4 92460.4 92460.4 92460.4 92460.4 ...
    rAs                   (YG, XC) >f4 3.43349e+10 3.43349e+10 3.43349e+10 ...
    rAw                   (YC, XG) >f4 4.11097e+10 4.11097e+10 4.11097e+10 ...
    Depth                 (YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    rA                    (YC, XC) >f4 4.11097e+10 4.11097e+10 4.11097e+10 ...
    dxG                   (YG, XC) >f4 77223.1 77223.1 77223.1 77223.1 ...
    dyG                   (YC, XG) >f4 444710.0 444710.0 444710.0 444710.0 ...
    rAz                   (YG, XG) >f4 3.43349e+10 3.43349e+10 3.43349e+10 ...
    dyC                   (YG, XC) >f4 444710.0 444710.0 444710.0 444710.0 ...
    PHrefC                (Z) >f4 245.25 833.85 1667.7 2844.9 4463.55 6572.7 ...
    drC                   (Zp1) >f4 25.0 60.0 85.0 120.0 165.0 215.0 265.0 ...
    PHrefF                (Zp1) >f4 0.0 490.5 1177.2 2158.2 3531.6 5395.5 ...
    drF                   (Z) >f4 50.0 70.0 100.0 140.0 190.0 240.0 290.0 ...
    hFacS                 (Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    hFacC                 (Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    hFacW                 (Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
  * layer_1RHO_center     (layer_1RHO_center) float32 20.1999 20.6922 21.169 ...
  * layer_1RHO_interface  (layer_1RHO_interface) >f4 20.4499 20.9345 21.4034 ...
  * layer_1RHO_bounds     (layer_1RHO_bounds) >f4 19.9499 20.4499 20.9345 ...
Data variables:
    tFluxtave             (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    PHLtave               (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Stave                 (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    UUtave                (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    LaHw1RHO              (time, layer_1RHO_center, YC, XG) >f4 0.0 0.0 0.0 ...
    LaPs1RHO              (time, layer_1RHO_center, YG, XC) >f4 0.0 0.0 0.0 ...
    LaHs1RHO              (time, layer_1RHO_center, YG, XC) >f4 0.0 0.0 0.0 ...
    LaUH1RHO              (time, layer_1RHO_center, YC, XG) >f4 0.0 0.0 0.0 ...
    LaVH1RHO              (time, layer_1RHO_center, YG, XC) >f4 0.0 0.0 0.0 ...
    LaPw1RHO              (time, layer_1RHO_center, YC, XG) >f4 0.0 0.0 0.0 ...
    UVtave                (time, Z, YG, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    uFluxtave             (time, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VStave                (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VTtave                (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    TTtave                (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    PhHytave              (time, Z, YC, XC) >f4 -8.30019 -8.30019 -8.30019 ...
    sFluxtave             (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    W                     (time, Zl, YC, XC) >f4 -0.0 -0.0 -0.0 -0.0 -0.0 ...
    ETAtave               (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VVtave                (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Ttave                 (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    PH                    (time, Z, YC, XC) >f4 -8.30019 -8.30019 -8.30019 ...
    vVeltave              (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    UTtave                (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    PHL2tave              (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    UStave                (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    uVeltave              (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    S                     (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Eta                   (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Eta2tave              (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFxE_TH               (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVy_TH               (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VTHMASS               (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFrE_TH               (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    WTHMASS               (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    TOTTTEND              (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVr_TH               (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFyE_TH               (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    UTHMASS               (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFrI_TH               (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVx_TH               (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    surForcT              (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    TFLUX                 (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    surForcS              (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    SFLUX                 (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    V                     (time, Z, YG, XC) >f4 -0.0 -0.0 -0.0 -0.0 -0.0 0.0 ...
    LaTs1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LTha1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LaSz1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LSto1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LSha1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LaTz1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LaSs1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LaTh1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LTto1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LTza1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LaSh1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    LSza1RHO              (time, layer_1RHO_interface, YC, XC) >f4 0.0 0.0 ...
    vFluxtave             (time, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    WTtave                (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    WStave                (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    GM_Kwz-T              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    PHL                   (time, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    THETA                 (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    UVEL                  (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VVEL                  (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    WVEL                  (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    SALT                  (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFrI_SLT              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    WSLTMASS              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVx_SLT              (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVr_SLT              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    TOTSTEND              (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    USLTMASS              (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFxE_SLT              (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFyE_SLT              (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    DFrE_SLT              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    ADVy_SLT              (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    VSLTMASS              (time, Z, YG, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Convtave              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    wVeltave              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    GM_Kwy-T              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    U                     (time, Z, YC, XG) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    Tdiftave              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    GM_Kwx-T              (time, Zl, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...
    T                     (time, Z, YC, XC) >f4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ...

data_dir, should be the path (absolute or relative) to an MITgcm run directory. xmitgcm will automatically scan this directory and try to determine the file prefixes and iteration numbers to read. In some configurations, the open_mdsdataset function may work without further keyword arguments. In most cases, you will have to specify further details.

For more details about the options and internals, consult Reading MDS Data.