Utilities for large scale climate data analysis¶
The xarrayutils.utils
module contains several functions that have proven useful in several of my day to day projects with both observational and model data.
Linear regression¶
One of the operations many scientists do is calculating a linear trend along a specified dimension (e.g. time) on each grid point of a dataset. linear_trend
makes this very easy. For demonstration purposes lets load some monthly gridded Argo data from APDRC
[22]:
import xarray as xr
import numpy as np
%matplotlib inline
[23]:
path = 'http://apdrc.soest.hawaii.edu:80/dods/public_data/Argo_Products/monthly_mean/monthly_mixed_layer'
ds = xr.open_dataset(path, use_cftime=True)
ds
<frozen importlib._bootstrap>:219: RuntimeWarning: numpy.ndarray size changed, may indicate binary incompatibility. Expected 80 from C header, got 88 from PyObject
[23]:
<xarray.Dataset> Dimensions: (lat: 60, lon: 120, time: 240) Coordinates: * time (time) object 2001-01-15 00:00:00 ... 2020-12-15 00:00:00 * lat (lat) float64 -88.5 -85.5 -82.5 -79.5 -76.5 ... 79.5 82.5 85.5 88.5 * lon (lon) float64 1.5 4.5 7.5 10.5 13.5 ... 349.5 352.5 355.5 358.5 Data variables: mld (time, lat, lon) float32 ... smld (time, lat, lon) float32 ... nmld (time, lat, lon) float32 ... ild (time, lat, lon) float32 ... sild (time, lat, lon) float32 ... nild (time, lat, lon) float32 ... ttd (time, lat, lon) float32 ... sttd (time, lat, lon) float32 ... nttd (time, lat, lon) float32 ... blt (time, lat, lon) float32 ... sblt (time, lat, lon) float32 ... nblt (time, lat, lon) float32 ... tid (time, lat, lon) float32 ... stid (time, lat, lon) float32 ... ntid (time, lat, lon) float32 ... mlt (time, lat, lon) float32 ... smlt (time, lat, lon) float32 ... nmlt (time, lat, lon) float32 ... mls (time, lat, lon) float32 ... smls (time, lat, lon) float32 ... nmls (time, lat, lon) float32 ... Attributes: title: 3x3 bin-averaged Mixed Layer Monthly mean (from 2001) Conventions: COARDS\nGrADS dataType: Grid documentation: http://apdrc.soest.hawaii.edu/projects/Argo/index.html history: Wed Jan 06 09:40:44 HST 2021 : imported by GrADS Data Ser...
- lat: 60
- lon: 120
- time: 240
- time(time)object2001-01-15 00:00:00 ... 2020-12-...
- grads_dim :
- t
- grads_mapping :
- linear
- grads_size :
- 240
- grads_min :
- 00z15jan2001
- grads_step :
- 1mo
- long_name :
- time
- minimum :
- 00z15jan2001
- maximum :
- 00z15dec2020
- resolution :
- 30.435146
array([cftime.DatetimeGregorian(2001, 1, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2001, 2, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2001, 3, 15, 0, 0, 0, 0), ..., cftime.DatetimeGregorian(2020, 10, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2020, 11, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2020, 12, 15, 0, 0, 0, 0)], dtype=object)
- lat(lat)float64-88.5 -85.5 -82.5 ... 85.5 88.5
- grads_dim :
- y
- grads_mapping :
- linear
- grads_size :
- 60
- units :
- degrees_north
- long_name :
- latitude
- minimum :
- -88.5
- maximum :
- 88.5
- resolution :
- 3.0
array([-88.5, -85.5, -82.5, -79.5, -76.5, -73.5, -70.5, -67.5, -64.5, -61.5, -58.5, -55.5, -52.5, -49.5, -46.5, -43.5, -40.5, -37.5, -34.5, -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5])
- lon(lon)float641.5 4.5 7.5 ... 352.5 355.5 358.5
- grads_dim :
- x
- grads_mapping :
- linear
- grads_size :
- 120
- units :
- degrees_east
- long_name :
- longitude
- minimum :
- 1.5
- maximum :
- 358.5
- resolution :
- 3.0
array([ 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5, 91.5, 94.5, 97.5, 100.5, 103.5, 106.5, 109.5, 112.5, 115.5, 118.5, 121.5, 124.5, 127.5, 130.5, 133.5, 136.5, 139.5, 142.5, 145.5, 148.5, 151.5, 154.5, 157.5, 160.5, 163.5, 166.5, 169.5, 172.5, 175.5, 178.5, 181.5, 184.5, 187.5, 190.5, 193.5, 196.5, 199.5, 202.5, 205.5, 208.5, 211.5, 214.5, 217.5, 220.5, 223.5, 226.5, 229.5, 232.5, 235.5, 238.5, 241.5, 244.5, 247.5, 250.5, 253.5, 256.5, 259.5, 262.5, 265.5, 268.5, 271.5, 274.5, 277.5, 280.5, 283.5, 286.5, 289.5, 292.5, 295.5, 298.5, 301.5, 304.5, 307.5, 310.5, 313.5, 316.5, 319.5, 322.5, 325.5, 328.5, 331.5, 334.5, 337.5, 340.5, 343.5, 346.5, 349.5, 352.5, 355.5, 358.5])
- mld(time, lat, lon)float32...
- long_name :
- mixed layer depth (m)
[1728000 values with dtype=float32]
- smld(time, lat, lon)float32...
- long_name :
- standard mixed layer depth deviation (m)
[1728000 values with dtype=float32]
- nmld(time, lat, lon)float32...
- long_name :
- number of mixed layer depth profiles
[1728000 values with dtype=float32]
- ild(time, lat, lon)float32...
- long_name :
- isothermal layer depth (m)
[1728000 values with dtype=float32]
- sild(time, lat, lon)float32...
- long_name :
- standard isothermal layer depth deviation (m)
[1728000 values with dtype=float32]
- nild(time, lat, lon)float32...
- long_name :
- number of isothermal layer depth profiles
[1728000 values with dtype=float32]
- ttd(time, lat, lon)float32...
- long_name :
- top of the thermocline depth (m)
[1728000 values with dtype=float32]
- sttd(time, lat, lon)float32...
- long_name :
- standard top of the thermocline depth deviation (m)
[1728000 values with dtype=float32]
- nttd(time, lat, lon)float32...
- long_name :
- number of top of the thermocline depth profiles
[1728000 values with dtype=float32]
- blt(time, lat, lon)float32...
- long_name :
- (>0) barrier or (<0) compensated layer thickness (ttd - mld) (m)
[1728000 values with dtype=float32]
- sblt(time, lat, lon)float32...
- long_name :
- standard barrier or compensated layer thickness deviation (m)
[1728000 values with dtype=float32]
- nblt(time, lat, lon)float32...
- long_name :
- number of barrier or compensated layer-2 thickness profiles
[1728000 values with dtype=float32]
- tid(time, lat, lon)float32...
- long_name :
- temperature inversion depth (m)
[1728000 values with dtype=float32]
- stid(time, lat, lon)float32...
- long_name :
- standard temperature inversion depth deviation (m)
[1728000 values with dtype=float32]
- ntid(time, lat, lon)float32...
- long_name :
- number of temperature inversion depth profiles
[1728000 values with dtype=float32]
- mlt(time, lat, lon)float32...
- long_name :
- mixed layer temperature (degc)
[1728000 values with dtype=float32]
- smlt(time, lat, lon)float32...
- long_name :
- standard mixed layer temperature deviation (degc)
[1728000 values with dtype=float32]
- nmlt(time, lat, lon)float32...
- long_name :
- number of mixed layer temperature profiles
[1728000 values with dtype=float32]
- mls(time, lat, lon)float32...
- long_name :
- mixed layer salinity (psu)
[1728000 values with dtype=float32]
- smls(time, lat, lon)float32...
- long_name :
- standard mixed layer salinity deviation (psu)
[1728000 values with dtype=float32]
- nmls(time, lat, lon)float32...
- long_name :
- number of mixed layer salinity profiles
[1728000 values with dtype=float32]
- title :
- 3x3 bin-averaged Mixed Layer Monthly mean (from 2001)
- Conventions :
- COARDS GrADS
- dataType :
- Grid
- documentation :
- http://apdrc.soest.hawaii.edu/projects/Argo/index.html
- history :
- Wed Jan 06 09:40:44 HST 2021 : imported by GrADS Data Server 2.0
[24]:
ds.load()
[24]:
<xarray.Dataset> Dimensions: (lat: 60, lon: 120, time: 240) Coordinates: * time (time) object 2001-01-15 00:00:00 ... 2020-12-15 00:00:00 * lat (lat) float64 -88.5 -85.5 -82.5 -79.5 -76.5 ... 79.5 82.5 85.5 88.5 * lon (lon) float64 1.5 4.5 7.5 10.5 13.5 ... 349.5 352.5 355.5 358.5 Data variables: mld (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan smld (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nmld (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 ild (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan sild (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nild (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 ttd (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan sttd (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nttd (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 blt (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan sblt (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nblt (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 tid (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan stid (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan ntid (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 mlt (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan smlt (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nmlt (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 mls (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan smls (time, lat, lon) float32 nan nan nan nan nan ... nan nan nan nan nmls (time, lat, lon) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 Attributes: title: 3x3 bin-averaged Mixed Layer Monthly mean (from 2001) Conventions: COARDS\nGrADS dataType: Grid documentation: http://apdrc.soest.hawaii.edu/projects/Argo/index.html history: Wed Jan 06 09:40:44 HST 2021 : imported by GrADS Data Ser...
- lat: 60
- lon: 120
- time: 240
- time(time)object2001-01-15 00:00:00 ... 2020-12-...
- grads_dim :
- t
- grads_mapping :
- linear
- grads_size :
- 240
- grads_min :
- 00z15jan2001
- grads_step :
- 1mo
- long_name :
- time
- minimum :
- 00z15jan2001
- maximum :
- 00z15dec2020
- resolution :
- 30.435146
array([cftime.DatetimeGregorian(2001, 1, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2001, 2, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2001, 3, 15, 0, 0, 0, 0), ..., cftime.DatetimeGregorian(2020, 10, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2020, 11, 15, 0, 0, 0, 0), cftime.DatetimeGregorian(2020, 12, 15, 0, 0, 0, 0)], dtype=object)
- lat(lat)float64-88.5 -85.5 -82.5 ... 85.5 88.5
- grads_dim :
- y
- grads_mapping :
- linear
- grads_size :
- 60
- units :
- degrees_north
- long_name :
- latitude
- minimum :
- -88.5
- maximum :
- 88.5
- resolution :
- 3.0
array([-88.5, -85.5, -82.5, -79.5, -76.5, -73.5, -70.5, -67.5, -64.5, -61.5, -58.5, -55.5, -52.5, -49.5, -46.5, -43.5, -40.5, -37.5, -34.5, -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5])
- lon(lon)float641.5 4.5 7.5 ... 352.5 355.5 358.5
- grads_dim :
- x
- grads_mapping :
- linear
- grads_size :
- 120
- units :
- degrees_east
- long_name :
- longitude
- minimum :
- 1.5
- maximum :
- 358.5
- resolution :
- 3.0
array([ 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5, 91.5, 94.5, 97.5, 100.5, 103.5, 106.5, 109.5, 112.5, 115.5, 118.5, 121.5, 124.5, 127.5, 130.5, 133.5, 136.5, 139.5, 142.5, 145.5, 148.5, 151.5, 154.5, 157.5, 160.5, 163.5, 166.5, 169.5, 172.5, 175.5, 178.5, 181.5, 184.5, 187.5, 190.5, 193.5, 196.5, 199.5, 202.5, 205.5, 208.5, 211.5, 214.5, 217.5, 220.5, 223.5, 226.5, 229.5, 232.5, 235.5, 238.5, 241.5, 244.5, 247.5, 250.5, 253.5, 256.5, 259.5, 262.5, 265.5, 268.5, 271.5, 274.5, 277.5, 280.5, 283.5, 286.5, 289.5, 292.5, 295.5, 298.5, 301.5, 304.5, 307.5, 310.5, 313.5, 316.5, 319.5, 322.5, 325.5, 328.5, 331.5, 334.5, 337.5, 340.5, 343.5, 346.5, 349.5, 352.5, 355.5, 358.5])
- mld(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- mixed layer depth (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- smld(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard mixed layer depth deviation (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nmld(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of mixed layer depth profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- ild(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- isothermal layer depth (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- sild(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard isothermal layer depth deviation (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nild(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of isothermal layer depth profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- ttd(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- top of the thermocline depth (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- sttd(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard top of the thermocline depth deviation (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nttd(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of top of the thermocline depth profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- blt(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- (>0) barrier or (<0) compensated layer thickness (ttd - mld) (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- sblt(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard barrier or compensated layer thickness deviation (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nblt(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of barrier or compensated layer-2 thickness profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- tid(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- temperature inversion depth (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- stid(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard temperature inversion depth deviation (m)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- ntid(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of temperature inversion depth profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- mlt(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- mixed layer temperature (degc)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- smlt(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard mixed layer temperature deviation (degc)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nmlt(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of mixed layer temperature profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- mls(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- mixed layer salinity (psu)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- smls(time, lat, lon)float32nan nan nan nan ... nan nan nan nan
- long_name :
- standard mixed layer salinity deviation (psu)
array([[[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ... ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], [[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
- nmls(time, lat, lon)float320.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
- long_name :
- number of mixed layer salinity profiles
array([[[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., ... ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], [[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]], dtype=float32)
- title :
- 3x3 bin-averaged Mixed Layer Monthly mean (from 2001)
- Conventions :
- COARDS GrADS
- dataType :
- Grid
- documentation :
- http://apdrc.soest.hawaii.edu/projects/Argo/index.html
- history :
- Wed Jan 06 09:40:44 HST 2021 : imported by GrADS Data Server 2.0
Lets find out how much the salinity in each grid point changed over the full period (20 years)
[25]:
from xarrayutils.utils import linear_trend
[26]:
# create an array
salinity_regressed = linear_trend(ds.mls, 'time')
salinity_regressed
[26]:
<xarray.Dataset> Dimensions: (lat: 60, lon: 120) Coordinates: * lat (lat) float64 -88.5 -85.5 -82.5 -79.5 ... 79.5 82.5 85.5 88.5 * lon (lon) float64 1.5 4.5 7.5 10.5 13.5 ... 349.5 352.5 355.5 358.5 Data variables: slope (lat, lon) float64 nan nan nan nan ... 0.08067 0.07533 -0.005028 intercept (lat, lon) float64 nan nan nan nan ... 20.33 22.07 22.88 32.38 r_value (lat, lon) float64 nan nan nan nan nan ... 1.0 0.9608 1.0 -0.116 p_value (lat, lon) float64 nan nan nan nan nan ... nan 0.03919 nan 0.884 std_err (lat, lon) float64 nan nan nan nan ... 0.0 0.01646 0.0 0.03045
- lat: 60
- lon: 120
- lat(lat)float64-88.5 -85.5 -82.5 ... 85.5 88.5
- grads_dim :
- y
- grads_mapping :
- linear
- grads_size :
- 60
- units :
- degrees_north
- long_name :
- latitude
- minimum :
- -88.5
- maximum :
- 88.5
- resolution :
- 3.0
array([-88.5, -85.5, -82.5, -79.5, -76.5, -73.5, -70.5, -67.5, -64.5, -61.5, -58.5, -55.5, -52.5, -49.5, -46.5, -43.5, -40.5, -37.5, -34.5, -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5])
- lon(lon)float641.5 4.5 7.5 ... 352.5 355.5 358.5
- grads_dim :
- x
- grads_mapping :
- linear
- grads_size :
- 120
- units :
- degrees_east
- long_name :
- longitude
- minimum :
- 1.5
- maximum :
- 358.5
- resolution :
- 3.0
array([ 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, 34.5, 37.5, 40.5, 43.5, 46.5, 49.5, 52.5, 55.5, 58.5, 61.5, 64.5, 67.5, 70.5, 73.5, 76.5, 79.5, 82.5, 85.5, 88.5, 91.5, 94.5, 97.5, 100.5, 103.5, 106.5, 109.5, 112.5, 115.5, 118.5, 121.5, 124.5, 127.5, 130.5, 133.5, 136.5, 139.5, 142.5, 145.5, 148.5, 151.5, 154.5, 157.5, 160.5, 163.5, 166.5, 169.5, 172.5, 175.5, 178.5, 181.5, 184.5, 187.5, 190.5, 193.5, 196.5, 199.5, 202.5, 205.5, 208.5, 211.5, 214.5, 217.5, 220.5, 223.5, 226.5, 229.5, 232.5, 235.5, 238.5, 241.5, 244.5, 247.5, 250.5, 253.5, 256.5, 259.5, 262.5, 265.5, 268.5, 271.5, 274.5, 277.5, 280.5, 283.5, 286.5, 289.5, 292.5, 295.5, 298.5, 301.5, 304.5, 307.5, 310.5, 313.5, 316.5, 319.5, 322.5, 325.5, 328.5, 331.5, 334.5, 337.5, 340.5, 343.5, 346.5, 349.5, 352.5, 355.5, 358.5])
- slope(lat, lon)float64nan nan nan ... 0.07533 -0.005028
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [-0.17471966, -0.1307214 , nan, ..., nan, nan, -0.12865409], [-0.06662766, 0.01246144, 0.02708324, ..., 0.08067257, 0.07533328, -0.00502828]])
- intercept(lat, lon)float64nan nan nan ... 22.07 22.88 32.38
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [51.01670918, 46.24168974, nan, ..., nan, nan, 45.83755191], [39.08453748, 30.2413176 , 28.87167613, ..., 22.06638106, 22.88234011, 32.3844302 ]])
- r_value(lat, lon)float64nan nan nan ... 0.9608 1.0 -0.116
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., 0. , nan, nan], [-0.966784 , -0.99593594, 0. , ..., nan, 0. , -0.99963223], [-0.99116838, 1. , 0.98110759, ..., 0.960811 , 1. , -0.11597632]])
- p_value(lat, lon)float64nan nan nan ... 0.03919 nan 0.884
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [0.16454258, 0.05741457, nan, ..., nan, nan, 0.01726616], [0.08467113, nan, 0.12394385, ..., 0.039189 , nan, 0.88402368]])
- std_err(lat, lon)float64nan nan nan ... 0.01646 0.0 0.03045
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [0.04619174, 0.01182139, nan, ..., nan, nan, 0.00349016], [0.00891418, 0. , 0.0053405 , ..., 0.01645784, 0. , 0.03045052]])
Now we can plot the slope as a map
[27]:
salinity_regressed.slope.plot(robust=True)
[27]:
<matplotlib.collections.QuadMesh at 0x7f18a6d33280>
linear_trend
converts the dimension over which to integrate into logical indicies, so the units of the plot above are (salinity/timestep of the original product), so here PSS/month.
Correlation maps¶
But what about a bit more complex task? Lets find out how mixedlayer salinity and temperature correlate. For this we use xr_linregress
(for which linear_trend
is just a thin wrapper):
[28]:
from xarrayutils.utils import linear_trend, xr_linregress
[29]:
tempxsalt = xr_linregress(ds.mlt, ds.mls, dim='time')
[30]:
tempxsalt.r_value.plot()
[30]:
<matplotlib.collections.QuadMesh at 0x7f18a6857700>
This works in any dimension the dataset has:
[31]:
tempxsalt = xr_linregress(ds.mlt, ds.mls, dim='lon')
/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/computation.py:724: RuntimeWarning: invalid value encountered in sqrt
result_data = func(*input_data)
[32]:
tempxsalt.r_value.plot(x='time')
[32]:
<matplotlib.collections.QuadMesh at 0x7f18a5a87850>
This map shows that in lower latitudes spatial patterns of salinity are generally anticorrlated with temperature and vice versa in the high latitudes.
Hatch sign agreement¶
It can often be useful to indicate if the sign along an averaged (or otherwise aggregated) dimension. For instance to show if forced changes have a consistent sign in reference to a multi-member mean. sign_agreement
makes this easy. Consider this synthetic example:
[33]:
x = np.linspace(-np.pi, np.pi, 25)
y = np.linspace(-np.pi, np.pi, 25)
xx, yy = np.meshgrid(x,y)
data1 = np.sin(xx)
data2 = np.sin(yy)
data3 = np.ones_like(xx)
np.fill_diagonal(data3,np.nan)
np.fill_diagonal(data3[1:],np.nan)
np.fill_diagonal(data3[:,1:],np.nan)
np.fill_diagonal(data3[:,2:],np.nan)
da = xr.DataArray(np.array([data1, data2, data3]), dims=['member','x', 'y'])
da.plot(col='member')
[33]:
<xarray.plot.facetgrid.FacetGrid at 0x7f18a651b4f0>
Taking the mean of these fields, suggests that values increase in the upper-left, upper-right, lower-right quadrant, and the missing values in the third layer distort the mean.
[34]:
da.mean('member').plot()
[34]:
<matplotlib.collections.QuadMesh at 0x7f18a6545520>
Lets produce a mask to see where all elements along the member
dimension have the same sign:
[35]:
from xarrayutils.utils import sign_agreement
sign_agreement(da, da.mean('member'), 'member', threshold=1.0).plot()
[35]:
<matplotlib.collections.QuadMesh at 0x7f18a6172940>
You could use this information to indicate the areas of the average, where the members do not agree by hatching:
[36]:
da.mean('member').plot()
sign_agreement(
da, da.mean('member'), 'member'
).plot.contourf(
colors='none',
hatches=['..', None],
levels=[0,0.5],
add_colorbar=False
)
[36]:
<matplotlib.contour.QuadContourSet at 0x7f18a66cb2b0>
Masking values in the mixed layer¶
Sometimes it is helpful to analyze data by excluding the values in the mixed layer. This can be easily done with mask_mixedlayer
. Let’s see how:
First load a CMIP6 dataset from the cloud
[37]:
import intake
url = "https://raw.githubusercontent.com/NCAR/intake-esm-datastore/master/catalogs/pangeo-cmip6.json"
col = intake.open_esm_datastore(url)
cat = col.search(
table_id='Omon',
grid_label='gn',
experiment_id='historical',
member_id='r1i1p1f1',
variable_id=['thetao','mlotst'],#,
source_id=["ACCESS-ESM1-5"]
)
ddict = cat.to_dataset_dict(
zarr_kwargs={'consolidated':True, 'decode_times':True},
)
--> The keys in the returned dictionary of datasets are constructed as follows:
'activity_id.institution_id.source_id.experiment_id.table_id.grid_label'
[38]:
ds = ddict['CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn']
ds
[38]:
<xarray.Dataset> Dimensions: (bnds: 2, i: 360, j: 300, lev: 50, member_id: 1, time: 1980, vertices: 4) Coordinates: * i (i) int32 0 1 2 3 4 5 6 ... 353 354 355 356 357 358 359 * j (j) int32 0 1 2 3 4 5 6 ... 293 294 295 296 297 298 299 latitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> longitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> * time (time) datetime64[ns] 1850-01-16T12:00:00 ... 2014-12... time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1980, 2), meta=np.ndarray> * member_id (member_id) <U8 'r1i1p1f1' * lev (lev) float64 5.0 15.0 25.0 ... 5.499e+03 5.831e+03 lev_bnds (lev, bnds) float64 dask.array<chunksize=(50, 2), meta=np.ndarray> Dimensions without coordinates: bnds, vertices Data variables: mlotst (member_id, time, j, i) float32 dask.array<chunksize=(1, 196, 300, 360), meta=np.ndarray> vertices_latitude (j, i, vertices) float64 dask.array<chunksize=(300, 360, 4), meta=np.ndarray> vertices_longitude (j, i, vertices) float64 dask.array<chunksize=(300, 360, 4), meta=np.ndarray> thetao (member_id, time, lev, j, i) float32 dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray> Attributes: grid: native atmosphere N96 grid (145x192 latxlon) forcing_index: 1 table_id: Omon variant_label: r1i1p1f1 source: ACCESS-ESM1.5 (2019): \naerosol: CLASSIC (v1.0)\... tracking_id: hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fd... initialization_index: 1 physics_index: 1 run_variant: forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2... branch_time_in_parent: 21915.0 history: 2019-11-15T15:38:06Z ; CMOR rewrote data to be c... cmor_version: 3.4.0 grid_label: gn nominal_resolution: 250 km intake_esm_varname: mlotst\nthetao experiment_id: historical realization_index: 1 parent_activity_id: CMIP sub_experiment_id: none source_id: ACCESS-ESM1-5 branch_time_in_child: 0.0 parent_experiment_id: piControl activity_id: CMIP data_specs_version: 01.00.30 realm: ocean product: model-output Conventions: CF-1.7 CMIP-6.2 experiment: all-forcing simulation of the recent past mip_era: CMIP6 institution: Commonwealth Scientific and Industrial Research ... branch_method: standard frequency: mon institution_id: CSIRO title: ACCESS-ESM1-5 output prepared for CMIP6 table_info: Creation Date:(30 April 2019) MD5:e14f55f257ccea... parent_variant_label: r1i1p1f1 parent_mip_era: CMIP6 parent_time_units: days since 0101-1-1 further_info_url: https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCES... sub_experiment: none source_type: AOGCM version: v20191115 parent_source_id: ACCESS-ESM1-5 license: CMIP6 model data produced by CSIRO is licensed u... intake_esm_dataset_key: CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
- bnds: 2
- i: 360
- j: 300
- lev: 50
- member_id: 1
- time: 1980
- vertices: 4
- i(i)int320 1 2 3 4 5 ... 355 356 357 358 359
- long_name :
- cell index along first dimension
- units :
- 1
array([ 0, 1, 2, ..., 357, 358, 359], dtype=int32)
- j(j)int320 1 2 3 4 5 ... 295 296 297 298 299
- long_name :
- cell index along second dimension
- units :
- 1
array([ 0, 1, 2, ..., 297, 298, 299], dtype=int32)
- latitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_latitude
- long_name :
- latitude
- standard_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - longitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_longitude
- long_name :
- longitude
- standard_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - time(time)datetime64[ns]1850-01-16T12:00:00 ... 2014-12-...
- axis :
- T
- bounds :
- time_bnds
- long_name :
- time
- standard_name :
- time
array(['1850-01-16T12:00:00.000000000', '1850-02-15T00:00:00.000000000', '1850-03-16T12:00:00.000000000', ..., '2014-10-16T12:00:00.000000000', '2014-11-16T00:00:00.000000000', '2014-12-16T12:00:00.000000000'], dtype='datetime64[ns]')
- time_bnds(time, bnds)datetime64[ns]dask.array<chunksize=(1980, 2), meta=np.ndarray>
Array Chunk Bytes 31.68 kB 31.68 kB Shape (1980, 2) (1980, 2) Count 5 Tasks 1 Chunks Type datetime64[ns] numpy.ndarray - member_id(member_id)<U8'r1i1p1f1'
array(['r1i1p1f1'], dtype='<U8')
- lev(lev)float645.0 15.0 ... 5.499e+03 5.831e+03
- axis :
- Z
- bounds :
- lev_bnds
- long_name :
- ocean depth coordinate
- positive :
- down
- standard_name :
- depth
- units :
- m
array([5.000000e+00, 1.500000e+01, 2.500000e+01, 3.500000e+01, 4.500000e+01, 5.500000e+01, 6.500000e+01, 7.500000e+01, 8.500000e+01, 9.500000e+01, 1.050000e+02, 1.150000e+02, 1.250000e+02, 1.350000e+02, 1.450000e+02, 1.550000e+02, 1.650000e+02, 1.750000e+02, 1.850000e+02, 1.950000e+02, 2.050000e+02, 2.168468e+02, 2.413490e+02, 2.807807e+02, 3.432505e+02, 4.273156e+02, 5.367156e+02, 6.654141e+02, 8.127816e+02, 9.690651e+02, 1.130935e+03, 1.289605e+03, 1.455770e+03, 1.622926e+03, 1.801558e+03, 1.984855e+03, 2.182905e+03, 2.388417e+03, 2.610935e+03, 2.842564e+03, 3.092205e+03, 3.351295e+03, 3.628058e+03, 3.913264e+03, 4.214495e+03, 4.521918e+03, 4.842566e+03, 5.166130e+03, 5.499245e+03, 5.831294e+03])
- lev_bnds(lev, bnds)float64dask.array<chunksize=(50, 2), meta=np.ndarray>
Array Chunk Bytes 800 B 800 B Shape (50, 2) (50, 2) Count 2 Tasks 1 Chunks Type float64 numpy.ndarray
- mlotst(member_id, time, j, i)float32dask.array<chunksize=(1, 196, 300, 360), meta=np.ndarray>
- cell_measures :
- area: areacello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Sigma T is potential density referenced to ocean surface.
- history :
- 2019-11-15T15:38:05Z altered by CMOR: replaced missing value flag (-1e+20) with standard missing value (1e+20).
- long_name :
- Ocean Mixed Layer Thickness Defined by Sigma T
- standard_name :
- ocean_mixed_layer_thickness_defined_by_sigma_t
- units :
- m
Array Chunk Bytes 855.36 MB 84.67 MB Shape (1, 1980, 300, 360) (1, 196, 300, 360) Count 23 Tasks 11 Chunks Type float32 numpy.ndarray - vertices_latitude(j, i, vertices)float64dask.array<chunksize=(300, 360, 4), meta=np.ndarray>
- units :
- degrees_north
Array Chunk Bytes 3.46 MB 3.46 MB Shape (300, 360, 4) (300, 360, 4) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - vertices_longitude(j, i, vertices)float64dask.array<chunksize=(300, 360, 4), meta=np.ndarray>
- units :
- degrees_east
Array Chunk Bytes 3.46 MB 3.46 MB Shape (300, 360, 4) (300, 360, 4) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - thetao(member_id, time, lev, j, i)float32dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray>
- cell_measures :
- area: areacello volume: volcello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Diagnostic should be contributed even for models using conservative temperature as prognostic field.
- long_name :
- Sea Water Potential Temperature
- standard_name :
- sea_water_potential_temperature
- units :
- degC
Array Chunk Bytes 42.77 GB 108.00 MB Shape (1, 1980, 50, 300, 360) (1, 5, 50, 300, 360) Count 793 Tasks 396 Chunks Type float32 numpy.ndarray
- grid :
- native atmosphere N96 grid (145x192 latxlon)
- forcing_index :
- 1
- table_id :
- Omon
- variant_label :
- r1i1p1f1
- source :
- ACCESS-ESM1.5 (2019): aerosol: CLASSIC (v1.0) atmos: HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38 levels; top level 39255 m) atmosChem: none land: CABLE2.4 landIce: none ocean: ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m) ocnBgchem: WOMBAT (same grid as ocean) seaIce: CICE4.1 (same grid as ocean)
- tracking_id :
- hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fde hdl:21.14100/5c349831-3686-44bd-a668-b5473685d419 hdl:21.14100/daa38aaf-a8b6-432b-8711-b8e3d73ba87f hdl:21.14100/79363e12-71ec-45ff-8ac7-5d9caaf123be hdl:21.14100/a0ac1b51-fd2a-49b3-ac10-cf7f1afeb09c hdl:21.14100/33ea2626-c182-4510-924f-833bfa6efada hdl:21.14100/20e5ecb1-cbe8-438f-945e-762dfbef1caf hdl:21.14100/115a1ec8-d7c7-44d0-ae29-860faf8daea8 hdl:21.14100/d85fa960-37cc-439f-ad46-acb60581b568 hdl:21.14100/da6b29c5-d498-456f-ac04-63d595d7721e hdl:21.14100/47712943-793d-45ab-acca-b62678bce71b hdl:21.14100/1a06ae50-aac9-4e42-bf90-365ecffa0fd6 hdl:21.14100/42c2ee1a-2dc2-4976-a781-e9ce77da01c1 hdl:21.14100/19003e14-c05a-42bc-87e2-697106b55748 hdl:21.14100/2d3419d6-fc7c-4d65-9e90-ae36411f6627 hdl:21.14100/b292c680-e324-487d-89af-5e95579a6adf hdl:21.14100/5533bdc5-d82b-48ec-acd2-d4f07903f67c hdl:21.14100/c26507e7-0f70-402c-9f87-741919c26350
- initialization_index :
- 1
- physics_index :
- 1
- run_variant :
- forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2, N2O, CH4, CFC11, CFC12, CFC113, HCFC22, HFC125, HFC134a)
- branch_time_in_parent :
- 21915.0
- history :
- 2019-11-15T15:38:06Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards. 2019-11-15T15:08:04Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.
- cmor_version :
- 3.4.0
- grid_label :
- gn
- nominal_resolution :
- 250 km
- intake_esm_varname :
- mlotst thetao
- experiment_id :
- historical
- realization_index :
- 1
- parent_activity_id :
- CMIP
- sub_experiment_id :
- none
- source_id :
- ACCESS-ESM1-5
- branch_time_in_child :
- 0.0
- parent_experiment_id :
- piControl
- activity_id :
- CMIP
- data_specs_version :
- 01.00.30
- realm :
- ocean
- product :
- model-output
- Conventions :
- CF-1.7 CMIP-6.2
- experiment :
- all-forcing simulation of the recent past
- mip_era :
- CMIP6
- institution :
- Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia
- branch_method :
- standard
- frequency :
- mon
- institution_id :
- CSIRO
- title :
- ACCESS-ESM1-5 output prepared for CMIP6
- table_info :
- Creation Date:(30 April 2019) MD5:e14f55f257cceafb2523e41244962371
- parent_variant_label :
- r1i1p1f1
- parent_mip_era :
- CMIP6
- parent_time_units :
- days since 0101-1-1
- further_info_url :
- https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCESS-ESM1-5.historical.none.r1i1p1f1
- sub_experiment :
- none
- source_type :
- AOGCM
- version :
- v20191115
- parent_source_id :
- ACCESS-ESM1-5
- license :
- CMIP6 model data produced by CSIRO is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.
- intake_esm_dataset_key :
- CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
We can remove the values in the mixed layer
[39]:
from xarrayutils.utils import mask_mixedlayer
ds_wo_ml = mask_mixedlayer(ds, ds.mlotst)
ds_wo_ml
/home/jovyan/xarrayutils/xarrayutils/utils.py:805: UserWarning: Cell bounds [{z_bounds}] not found in input. Masking is performed with cell centers, which might be less accurate
warnings.warn(
[39]:
<xarray.Dataset> Dimensions: (bnds: 2, i: 360, j: 300, lev: 50, member_id: 1, time: 1980, vertices: 4) Coordinates: * i (i) int32 0 1 2 3 4 5 6 ... 353 354 355 356 357 358 359 * j (j) int32 0 1 2 3 4 5 6 ... 293 294 295 296 297 298 299 latitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> longitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> * time (time) datetime64[ns] 1850-01-16T12:00:00 ... 2014-12... time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1980, 2), meta=np.ndarray> * member_id (member_id) <U8 'r1i1p1f1' * lev (lev) float64 5.0 15.0 25.0 ... 5.499e+03 5.831e+03 lev_bnds (lev, bnds) float64 dask.array<chunksize=(50, 2), meta=np.ndarray> Dimensions without coordinates: bnds, vertices Data variables: mlotst (member_id, time, j, i, lev) float32 dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray> vertices_latitude (j, i, vertices, lev, member_id, time) float64 dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray> vertices_longitude (j, i, vertices, lev, member_id, time) float64 dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray> thetao (member_id, time, lev, j, i) float32 dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray> Attributes: grid: native atmosphere N96 grid (145x192... forcing_index: 1 table_id: Omon variant_label: r1i1p1f1 source: ACCESS-ESM1.5 (2019): \naerosol: CL... tracking_id: hdl:21.14100/4ca9ce2d-6374-4e22-8ad... initialization_index: 1 physics_index: 1 run_variant: forcing: GHG, Oz, SA, Sl, Vl, BC, O... branch_time_in_parent: 21915.0 history: 2019-11-15T15:38:06Z ; CMOR rewrote... cmor_version: 3.4.0 grid_label: gn nominal_resolution: 250 km intake_esm_varname: mlotst\nthetao experiment_id: historical realization_index: 1 parent_activity_id: CMIP sub_experiment_id: none source_id: ACCESS-ESM1-5 branch_time_in_child: 0.0 parent_experiment_id: piControl activity_id: CMIP data_specs_version: 01.00.30 realm: ocean product: model-output Conventions: CF-1.7 CMIP-6.2 experiment: all-forcing simulation of the recen... mip_era: CMIP6 institution: Commonwealth Scientific and Industr... branch_method: standard frequency: mon institution_id: CSIRO title: ACCESS-ESM1-5 output prepared for C... table_info: Creation Date:(30 April 2019) MD5:e... parent_variant_label: r1i1p1f1 parent_mip_era: CMIP6 parent_time_units: days since 0101-1-1 further_info_url: https://furtherinfo.es-doc.org/CMIP... sub_experiment: none source_type: AOGCM version: v20191115 parent_source_id: ACCESS-ESM1-5 license: CMIP6 model data produced by CSIRO ... intake_esm_dataset_key: CMIP.CSIRO.ACCESS-ESM1-5.historical... mixed_layer_values_removed_based_on: lev
- bnds: 2
- i: 360
- j: 300
- lev: 50
- member_id: 1
- time: 1980
- vertices: 4
- i(i)int320 1 2 3 4 5 ... 355 356 357 358 359
- long_name :
- cell index along first dimension
- units :
- 1
array([ 0, 1, 2, ..., 357, 358, 359], dtype=int32)
- j(j)int320 1 2 3 4 5 ... 295 296 297 298 299
- long_name :
- cell index along second dimension
- units :
- 1
array([ 0, 1, 2, ..., 297, 298, 299], dtype=int32)
- latitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_latitude
- long_name :
- latitude
- standard_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - longitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_longitude
- long_name :
- longitude
- standard_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - time(time)datetime64[ns]1850-01-16T12:00:00 ... 2014-12-...
- axis :
- T
- bounds :
- time_bnds
- long_name :
- time
- standard_name :
- time
array(['1850-01-16T12:00:00.000000000', '1850-02-15T00:00:00.000000000', '1850-03-16T12:00:00.000000000', ..., '2014-10-16T12:00:00.000000000', '2014-11-16T00:00:00.000000000', '2014-12-16T12:00:00.000000000'], dtype='datetime64[ns]')
- time_bnds(time, bnds)datetime64[ns]dask.array<chunksize=(1980, 2), meta=np.ndarray>
Array Chunk Bytes 31.68 kB 31.68 kB Shape (1980, 2) (1980, 2) Count 5 Tasks 1 Chunks Type datetime64[ns] numpy.ndarray - member_id(member_id)<U8'r1i1p1f1'
array(['r1i1p1f1'], dtype='<U8')
- lev(lev)float645.0 15.0 ... 5.499e+03 5.831e+03
- axis :
- Z
- bounds :
- lev_bnds
- long_name :
- ocean depth coordinate
- positive :
- down
- standard_name :
- depth
- units :
- m
array([5.000000e+00, 1.500000e+01, 2.500000e+01, 3.500000e+01, 4.500000e+01, 5.500000e+01, 6.500000e+01, 7.500000e+01, 8.500000e+01, 9.500000e+01, 1.050000e+02, 1.150000e+02, 1.250000e+02, 1.350000e+02, 1.450000e+02, 1.550000e+02, 1.650000e+02, 1.750000e+02, 1.850000e+02, 1.950000e+02, 2.050000e+02, 2.168468e+02, 2.413490e+02, 2.807807e+02, 3.432505e+02, 4.273156e+02, 5.367156e+02, 6.654141e+02, 8.127816e+02, 9.690651e+02, 1.130935e+03, 1.289605e+03, 1.455770e+03, 1.622926e+03, 1.801558e+03, 1.984855e+03, 2.182905e+03, 2.388417e+03, 2.610935e+03, 2.842564e+03, 3.092205e+03, 3.351295e+03, 3.628058e+03, 3.913264e+03, 4.214495e+03, 4.521918e+03, 4.842566e+03, 5.166130e+03, 5.499245e+03, 5.831294e+03])
- lev_bnds(lev, bnds)float64dask.array<chunksize=(50, 2), meta=np.ndarray>
Array Chunk Bytes 800 B 800 B Shape (50, 2) (50, 2) Count 2 Tasks 1 Chunks Type float64 numpy.ndarray
- mlotst(member_id, time, j, i, lev)float32dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray>
- cell_measures :
- area: areacello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Sigma T is potential density referenced to ocean surface.
- history :
- 2019-11-15T15:38:05Z altered by CMOR: replaced missing value flag (-1e+20) with standard missing value (1e+20).
- long_name :
- Ocean Mixed Layer Thickness Defined by Sigma T
- standard_name :
- ocean_mixed_layer_thickness_defined_by_sigma_t
- units :
- m
Array Chunk Bytes 42.77 GB 4.23 GB Shape (1, 1980, 300, 360, 50) (1, 196, 300, 360, 50) Count 101 Tasks 11 Chunks Type float32 numpy.ndarray - vertices_latitude(j, i, vertices, lev, member_id, time)float64dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray>
- units :
- degrees_north
Array Chunk Bytes 342.14 GB 33.87 GB Shape (300, 360, 4, 50, 1, 1980) (300, 360, 4, 50, 1, 196) Count 107 Tasks 11 Chunks Type float64 numpy.ndarray - vertices_longitude(j, i, vertices, lev, member_id, time)float64dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray>
- units :
- degrees_east
Array Chunk Bytes 342.14 GB 33.87 GB Shape (300, 360, 4, 50, 1, 1980) (300, 360, 4, 50, 1, 196) Count 107 Tasks 11 Chunks Type float64 numpy.ndarray - thetao(member_id, time, lev, j, i)float32dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray>
- cell_measures :
- area: areacello volume: volcello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Diagnostic should be contributed even for models using conservative temperature as prognostic field.
- long_name :
- Sea Water Potential Temperature
- standard_name :
- sea_water_potential_temperature
- units :
- degC
Array Chunk Bytes 42.77 GB 108.00 MB Shape (1, 1980, 50, 300, 360) (1, 5, 50, 300, 360) Count 2504 Tasks 404 Chunks Type float32 numpy.ndarray
- grid :
- native atmosphere N96 grid (145x192 latxlon)
- forcing_index :
- 1
- table_id :
- Omon
- variant_label :
- r1i1p1f1
- source :
- ACCESS-ESM1.5 (2019): aerosol: CLASSIC (v1.0) atmos: HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38 levels; top level 39255 m) atmosChem: none land: CABLE2.4 landIce: none ocean: ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m) ocnBgchem: WOMBAT (same grid as ocean) seaIce: CICE4.1 (same grid as ocean)
- tracking_id :
- hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fde hdl:21.14100/5c349831-3686-44bd-a668-b5473685d419 hdl:21.14100/daa38aaf-a8b6-432b-8711-b8e3d73ba87f hdl:21.14100/79363e12-71ec-45ff-8ac7-5d9caaf123be hdl:21.14100/a0ac1b51-fd2a-49b3-ac10-cf7f1afeb09c hdl:21.14100/33ea2626-c182-4510-924f-833bfa6efada hdl:21.14100/20e5ecb1-cbe8-438f-945e-762dfbef1caf hdl:21.14100/115a1ec8-d7c7-44d0-ae29-860faf8daea8 hdl:21.14100/d85fa960-37cc-439f-ad46-acb60581b568 hdl:21.14100/da6b29c5-d498-456f-ac04-63d595d7721e hdl:21.14100/47712943-793d-45ab-acca-b62678bce71b hdl:21.14100/1a06ae50-aac9-4e42-bf90-365ecffa0fd6 hdl:21.14100/42c2ee1a-2dc2-4976-a781-e9ce77da01c1 hdl:21.14100/19003e14-c05a-42bc-87e2-697106b55748 hdl:21.14100/2d3419d6-fc7c-4d65-9e90-ae36411f6627 hdl:21.14100/b292c680-e324-487d-89af-5e95579a6adf hdl:21.14100/5533bdc5-d82b-48ec-acd2-d4f07903f67c hdl:21.14100/c26507e7-0f70-402c-9f87-741919c26350
- initialization_index :
- 1
- physics_index :
- 1
- run_variant :
- forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2, N2O, CH4, CFC11, CFC12, CFC113, HCFC22, HFC125, HFC134a)
- branch_time_in_parent :
- 21915.0
- history :
- 2019-11-15T15:38:06Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards. 2019-11-15T15:08:04Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.
- cmor_version :
- 3.4.0
- grid_label :
- gn
- nominal_resolution :
- 250 km
- intake_esm_varname :
- mlotst thetao
- experiment_id :
- historical
- realization_index :
- 1
- parent_activity_id :
- CMIP
- sub_experiment_id :
- none
- source_id :
- ACCESS-ESM1-5
- branch_time_in_child :
- 0.0
- parent_experiment_id :
- piControl
- activity_id :
- CMIP
- data_specs_version :
- 01.00.30
- realm :
- ocean
- product :
- model-output
- Conventions :
- CF-1.7 CMIP-6.2
- experiment :
- all-forcing simulation of the recent past
- mip_era :
- CMIP6
- institution :
- Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia
- branch_method :
- standard
- frequency :
- mon
- institution_id :
- CSIRO
- title :
- ACCESS-ESM1-5 output prepared for CMIP6
- table_info :
- Creation Date:(30 April 2019) MD5:e14f55f257cceafb2523e41244962371
- parent_variant_label :
- r1i1p1f1
- parent_mip_era :
- CMIP6
- parent_time_units :
- days since 0101-1-1
- further_info_url :
- https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCESS-ESM1-5.historical.none.r1i1p1f1
- sub_experiment :
- none
- source_type :
- AOGCM
- version :
- v20191115
- parent_source_id :
- ACCESS-ESM1-5
- license :
- CMIP6 model data produced by CSIRO is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.
- intake_esm_dataset_key :
- CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
- mixed_layer_values_removed_based_on :
- lev
Or to have the mixed layer values only
[40]:
from xarrayutils.utils import mask_mixedlayer
ds_ml_only = mask_mixedlayer(ds, ds.mlotst, mask='inside')
ds_ml_only
/home/jovyan/xarrayutils/xarrayutils/utils.py:805: UserWarning: Cell bounds [{z_bounds}] not found in input. Masking is performed with cell centers, which might be less accurate
warnings.warn(
[40]:
<xarray.Dataset> Dimensions: (bnds: 2, i: 360, j: 300, lev: 50, member_id: 1, time: 1980, vertices: 4) Coordinates: * i (i) int32 0 1 2 3 4 5 6 ... 353 354 355 356 357 358 359 * j (j) int32 0 1 2 3 4 5 6 ... 293 294 295 296 297 298 299 latitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> longitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> * time (time) datetime64[ns] 1850-01-16T12:00:00 ... 2014-12... time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1980, 2), meta=np.ndarray> * member_id (member_id) <U8 'r1i1p1f1' * lev (lev) float64 5.0 15.0 25.0 ... 5.499e+03 5.831e+03 lev_bnds (lev, bnds) float64 dask.array<chunksize=(50, 2), meta=np.ndarray> Dimensions without coordinates: bnds, vertices Data variables: mlotst (member_id, time, j, i, lev) float32 dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray> vertices_latitude (j, i, vertices, lev, member_id, time) float64 dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray> vertices_longitude (j, i, vertices, lev, member_id, time) float64 dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray> thetao (member_id, time, lev, j, i) float32 dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray> Attributes: grid: native atmosphere N96 grid (145x192... forcing_index: 1 table_id: Omon variant_label: r1i1p1f1 source: ACCESS-ESM1.5 (2019): \naerosol: CL... tracking_id: hdl:21.14100/4ca9ce2d-6374-4e22-8ad... initialization_index: 1 physics_index: 1 run_variant: forcing: GHG, Oz, SA, Sl, Vl, BC, O... branch_time_in_parent: 21915.0 history: 2019-11-15T15:38:06Z ; CMOR rewrote... cmor_version: 3.4.0 grid_label: gn nominal_resolution: 250 km intake_esm_varname: mlotst\nthetao experiment_id: historical realization_index: 1 parent_activity_id: CMIP sub_experiment_id: none source_id: ACCESS-ESM1-5 branch_time_in_child: 0.0 parent_experiment_id: piControl activity_id: CMIP data_specs_version: 01.00.30 realm: ocean product: model-output Conventions: CF-1.7 CMIP-6.2 experiment: all-forcing simulation of the recen... mip_era: CMIP6 institution: Commonwealth Scientific and Industr... branch_method: standard frequency: mon institution_id: CSIRO title: ACCESS-ESM1-5 output prepared for C... table_info: Creation Date:(30 April 2019) MD5:e... parent_variant_label: r1i1p1f1 parent_mip_era: CMIP6 parent_time_units: days since 0101-1-1 further_info_url: https://furtherinfo.es-doc.org/CMIP... sub_experiment: none source_type: AOGCM version: v20191115 parent_source_id: ACCESS-ESM1-5 license: CMIP6 model data produced by CSIRO ... intake_esm_dataset_key: CMIP.CSIRO.ACCESS-ESM1-5.historical... mixed_layer_values_removed_based_on: lev
- bnds: 2
- i: 360
- j: 300
- lev: 50
- member_id: 1
- time: 1980
- vertices: 4
- i(i)int320 1 2 3 4 5 ... 355 356 357 358 359
- long_name :
- cell index along first dimension
- units :
- 1
array([ 0, 1, 2, ..., 357, 358, 359], dtype=int32)
- j(j)int320 1 2 3 4 5 ... 295 296 297 298 299
- long_name :
- cell index along second dimension
- units :
- 1
array([ 0, 1, 2, ..., 297, 298, 299], dtype=int32)
- latitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_latitude
- long_name :
- latitude
- standard_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - longitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_longitude
- long_name :
- longitude
- standard_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - time(time)datetime64[ns]1850-01-16T12:00:00 ... 2014-12-...
- axis :
- T
- bounds :
- time_bnds
- long_name :
- time
- standard_name :
- time
array(['1850-01-16T12:00:00.000000000', '1850-02-15T00:00:00.000000000', '1850-03-16T12:00:00.000000000', ..., '2014-10-16T12:00:00.000000000', '2014-11-16T00:00:00.000000000', '2014-12-16T12:00:00.000000000'], dtype='datetime64[ns]')
- time_bnds(time, bnds)datetime64[ns]dask.array<chunksize=(1980, 2), meta=np.ndarray>
Array Chunk Bytes 31.68 kB 31.68 kB Shape (1980, 2) (1980, 2) Count 5 Tasks 1 Chunks Type datetime64[ns] numpy.ndarray - member_id(member_id)<U8'r1i1p1f1'
array(['r1i1p1f1'], dtype='<U8')
- lev(lev)float645.0 15.0 ... 5.499e+03 5.831e+03
- axis :
- Z
- bounds :
- lev_bnds
- long_name :
- ocean depth coordinate
- positive :
- down
- standard_name :
- depth
- units :
- m
array([5.000000e+00, 1.500000e+01, 2.500000e+01, 3.500000e+01, 4.500000e+01, 5.500000e+01, 6.500000e+01, 7.500000e+01, 8.500000e+01, 9.500000e+01, 1.050000e+02, 1.150000e+02, 1.250000e+02, 1.350000e+02, 1.450000e+02, 1.550000e+02, 1.650000e+02, 1.750000e+02, 1.850000e+02, 1.950000e+02, 2.050000e+02, 2.168468e+02, 2.413490e+02, 2.807807e+02, 3.432505e+02, 4.273156e+02, 5.367156e+02, 6.654141e+02, 8.127816e+02, 9.690651e+02, 1.130935e+03, 1.289605e+03, 1.455770e+03, 1.622926e+03, 1.801558e+03, 1.984855e+03, 2.182905e+03, 2.388417e+03, 2.610935e+03, 2.842564e+03, 3.092205e+03, 3.351295e+03, 3.628058e+03, 3.913264e+03, 4.214495e+03, 4.521918e+03, 4.842566e+03, 5.166130e+03, 5.499245e+03, 5.831294e+03])
- lev_bnds(lev, bnds)float64dask.array<chunksize=(50, 2), meta=np.ndarray>
Array Chunk Bytes 800 B 800 B Shape (50, 2) (50, 2) Count 2 Tasks 1 Chunks Type float64 numpy.ndarray
- mlotst(member_id, time, j, i, lev)float32dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray>
- cell_measures :
- area: areacello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Sigma T is potential density referenced to ocean surface.
- history :
- 2019-11-15T15:38:05Z altered by CMOR: replaced missing value flag (-1e+20) with standard missing value (1e+20).
- long_name :
- Ocean Mixed Layer Thickness Defined by Sigma T
- standard_name :
- ocean_mixed_layer_thickness_defined_by_sigma_t
- units :
- m
Array Chunk Bytes 42.77 GB 4.23 GB Shape (1, 1980, 300, 360, 50) (1, 196, 300, 360, 50) Count 101 Tasks 11 Chunks Type float32 numpy.ndarray - vertices_latitude(j, i, vertices, lev, member_id, time)float64dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray>
- units :
- degrees_north
Array Chunk Bytes 342.14 GB 33.87 GB Shape (300, 360, 4, 50, 1, 1980) (300, 360, 4, 50, 1, 196) Count 107 Tasks 11 Chunks Type float64 numpy.ndarray - vertices_longitude(j, i, vertices, lev, member_id, time)float64dask.array<chunksize=(300, 360, 4, 50, 1, 196), meta=np.ndarray>
- units :
- degrees_east
Array Chunk Bytes 342.14 GB 33.87 GB Shape (300, 360, 4, 50, 1, 1980) (300, 360, 4, 50, 1, 196) Count 107 Tasks 11 Chunks Type float64 numpy.ndarray - thetao(member_id, time, lev, j, i)float32dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray>
- cell_measures :
- area: areacello volume: volcello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Diagnostic should be contributed even for models using conservative temperature as prognostic field.
- long_name :
- Sea Water Potential Temperature
- standard_name :
- sea_water_potential_temperature
- units :
- degC
Array Chunk Bytes 42.77 GB 108.00 MB Shape (1, 1980, 50, 300, 360) (1, 5, 50, 300, 360) Count 2504 Tasks 404 Chunks Type float32 numpy.ndarray
- grid :
- native atmosphere N96 grid (145x192 latxlon)
- forcing_index :
- 1
- table_id :
- Omon
- variant_label :
- r1i1p1f1
- source :
- ACCESS-ESM1.5 (2019): aerosol: CLASSIC (v1.0) atmos: HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38 levels; top level 39255 m) atmosChem: none land: CABLE2.4 landIce: none ocean: ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m) ocnBgchem: WOMBAT (same grid as ocean) seaIce: CICE4.1 (same grid as ocean)
- tracking_id :
- hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fde hdl:21.14100/5c349831-3686-44bd-a668-b5473685d419 hdl:21.14100/daa38aaf-a8b6-432b-8711-b8e3d73ba87f hdl:21.14100/79363e12-71ec-45ff-8ac7-5d9caaf123be hdl:21.14100/a0ac1b51-fd2a-49b3-ac10-cf7f1afeb09c hdl:21.14100/33ea2626-c182-4510-924f-833bfa6efada hdl:21.14100/20e5ecb1-cbe8-438f-945e-762dfbef1caf hdl:21.14100/115a1ec8-d7c7-44d0-ae29-860faf8daea8 hdl:21.14100/d85fa960-37cc-439f-ad46-acb60581b568 hdl:21.14100/da6b29c5-d498-456f-ac04-63d595d7721e hdl:21.14100/47712943-793d-45ab-acca-b62678bce71b hdl:21.14100/1a06ae50-aac9-4e42-bf90-365ecffa0fd6 hdl:21.14100/42c2ee1a-2dc2-4976-a781-e9ce77da01c1 hdl:21.14100/19003e14-c05a-42bc-87e2-697106b55748 hdl:21.14100/2d3419d6-fc7c-4d65-9e90-ae36411f6627 hdl:21.14100/b292c680-e324-487d-89af-5e95579a6adf hdl:21.14100/5533bdc5-d82b-48ec-acd2-d4f07903f67c hdl:21.14100/c26507e7-0f70-402c-9f87-741919c26350
- initialization_index :
- 1
- physics_index :
- 1
- run_variant :
- forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2, N2O, CH4, CFC11, CFC12, CFC113, HCFC22, HFC125, HFC134a)
- branch_time_in_parent :
- 21915.0
- history :
- 2019-11-15T15:38:06Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards. 2019-11-15T15:08:04Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.
- cmor_version :
- 3.4.0
- grid_label :
- gn
- nominal_resolution :
- 250 km
- intake_esm_varname :
- mlotst thetao
- experiment_id :
- historical
- realization_index :
- 1
- parent_activity_id :
- CMIP
- sub_experiment_id :
- none
- source_id :
- ACCESS-ESM1-5
- branch_time_in_child :
- 0.0
- parent_experiment_id :
- piControl
- activity_id :
- CMIP
- data_specs_version :
- 01.00.30
- realm :
- ocean
- product :
- model-output
- Conventions :
- CF-1.7 CMIP-6.2
- experiment :
- all-forcing simulation of the recent past
- mip_era :
- CMIP6
- institution :
- Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia
- branch_method :
- standard
- frequency :
- mon
- institution_id :
- CSIRO
- title :
- ACCESS-ESM1-5 output prepared for CMIP6
- table_info :
- Creation Date:(30 April 2019) MD5:e14f55f257cceafb2523e41244962371
- parent_variant_label :
- r1i1p1f1
- parent_mip_era :
- CMIP6
- parent_time_units :
- days since 0101-1-1
- further_info_url :
- https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCESS-ESM1-5.historical.none.r1i1p1f1
- sub_experiment :
- none
- source_type :
- AOGCM
- version :
- v20191115
- parent_source_id :
- ACCESS-ESM1-5
- license :
- CMIP6 model data produced by CSIRO is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.
- intake_esm_dataset_key :
- CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
- mixed_layer_values_removed_based_on :
- lev
[41]:
import matplotlib.pyplot as plt
roi = dict(i=150, time=0, j=slice(50, 200))
plt.figure(figsize=[10, 15])
for di, (data, label) in enumerate(zip([ds, ds_wo_ml, ds_ml_only], ['full data', 'mixed layer removed', 'mixed layer only'])):
plt.subplot(3,1,di+1)
data.thetao.isel(lev=slice(0,20),**roi).plot(yincrease=False)
ds.mlotst.isel(**roi).plot(x='j')
plt.title(label)
In this case the cell bounds are not available for the model output, but mask_mixedlayer
has the option to take those into account and e.g. remove cells only if the lower boundary is within the mixed layer. All you need to do is correctly specify z_bounds
with the variable/coordinate name of the cell bounds.
Removing bottom values¶
For similar reasons you might sometimes want to mask out the values closest to the ocean bottom. remove_bottom_values
will mask out the bottom-most grid cell at every location.
[42]:
from xarrayutils.utils import remove_bottom_values
ds_bot_removed = remove_bottom_values(ds)
ds_bot_removed
[42]:
<xarray.Dataset> Dimensions: (bnds: 2, i: 360, j: 300, lev: 50, member_id: 1, time: 1980, vertices: 4) Coordinates: * i (i) int32 0 1 2 3 4 5 6 ... 353 354 355 356 357 358 359 * j (j) int32 0 1 2 3 4 5 6 ... 293 294 295 296 297 298 299 latitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> longitude (j, i) float64 dask.array<chunksize=(300, 360), meta=np.ndarray> * time (time) datetime64[ns] 1850-01-16T12:00:00 ... 2014-12... time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1980, 2), meta=np.ndarray> * member_id (member_id) <U8 'r1i1p1f1' * lev (lev) float64 5.0 15.0 25.0 ... 5.499e+03 5.831e+03 lev_bnds (lev, bnds) float64 dask.array<chunksize=(50, 2), meta=np.ndarray> Dimensions without coordinates: bnds, vertices Data variables: mlotst (member_id, time, j, i, lev) float32 dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray> vertices_latitude (j, i, vertices, lev) float64 dask.array<chunksize=(300, 360, 4, 50), meta=np.ndarray> vertices_longitude (j, i, vertices, lev) float64 dask.array<chunksize=(300, 360, 4, 50), meta=np.ndarray> thetao (member_id, time, lev, j, i) float32 dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray> Attributes: grid: native atmosphere N96 grid (145x192 latxlon) forcing_index: 1 table_id: Omon variant_label: r1i1p1f1 source: ACCESS-ESM1.5 (2019): \naerosol: CLASSIC (v1.0)\... tracking_id: hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fd... initialization_index: 1 physics_index: 1 run_variant: forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2... branch_time_in_parent: 21915.0 history: 2019-11-15T15:38:06Z ; CMOR rewrote data to be c... cmor_version: 3.4.0 grid_label: gn nominal_resolution: 250 km intake_esm_varname: mlotst\nthetao experiment_id: historical realization_index: 1 parent_activity_id: CMIP sub_experiment_id: none source_id: ACCESS-ESM1-5 branch_time_in_child: 0.0 parent_experiment_id: piControl activity_id: CMIP data_specs_version: 01.00.30 realm: ocean product: model-output Conventions: CF-1.7 CMIP-6.2 experiment: all-forcing simulation of the recent past mip_era: CMIP6 institution: Commonwealth Scientific and Industrial Research ... branch_method: standard frequency: mon institution_id: CSIRO title: ACCESS-ESM1-5 output prepared for CMIP6 table_info: Creation Date:(30 April 2019) MD5:e14f55f257ccea... parent_variant_label: r1i1p1f1 parent_mip_era: CMIP6 parent_time_units: days since 0101-1-1 further_info_url: https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCES... sub_experiment: none source_type: AOGCM version: v20191115 parent_source_id: ACCESS-ESM1-5 license: CMIP6 model data produced by CSIRO is licensed u... intake_esm_dataset_key: CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
- bnds: 2
- i: 360
- j: 300
- lev: 50
- member_id: 1
- time: 1980
- vertices: 4
- i(i)int320 1 2 3 4 5 ... 355 356 357 358 359
- long_name :
- cell index along first dimension
- units :
- 1
array([ 0, 1, 2, ..., 357, 358, 359], dtype=int32)
- j(j)int320 1 2 3 4 5 ... 295 296 297 298 299
- long_name :
- cell index along second dimension
- units :
- 1
array([ 0, 1, 2, ..., 297, 298, 299], dtype=int32)
- latitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_latitude
- long_name :
- latitude
- standard_name :
- latitude
- units :
- degrees_north
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - longitude(j, i)float64dask.array<chunksize=(300, 360), meta=np.ndarray>
- bounds :
- vertices_longitude
- long_name :
- longitude
- standard_name :
- longitude
- units :
- degrees_east
Array Chunk Bytes 864.00 kB 864.00 kB Shape (300, 360) (300, 360) Count 5 Tasks 1 Chunks Type float64 numpy.ndarray - time(time)datetime64[ns]1850-01-16T12:00:00 ... 2014-12-...
- axis :
- T
- bounds :
- time_bnds
- long_name :
- time
- standard_name :
- time
array(['1850-01-16T12:00:00.000000000', '1850-02-15T00:00:00.000000000', '1850-03-16T12:00:00.000000000', ..., '2014-10-16T12:00:00.000000000', '2014-11-16T00:00:00.000000000', '2014-12-16T12:00:00.000000000'], dtype='datetime64[ns]')
- time_bnds(time, bnds)datetime64[ns]dask.array<chunksize=(1980, 2), meta=np.ndarray>
Array Chunk Bytes 31.68 kB 31.68 kB Shape (1980, 2) (1980, 2) Count 5 Tasks 1 Chunks Type datetime64[ns] numpy.ndarray - member_id(member_id)<U8'r1i1p1f1'
array(['r1i1p1f1'], dtype='<U8')
- lev(lev)float645.0 15.0 ... 5.499e+03 5.831e+03
- axis :
- Z
- bounds :
- lev_bnds
- long_name :
- ocean depth coordinate
- positive :
- down
- standard_name :
- depth
- units :
- m
array([5.000000e+00, 1.500000e+01, 2.500000e+01, 3.500000e+01, 4.500000e+01, 5.500000e+01, 6.500000e+01, 7.500000e+01, 8.500000e+01, 9.500000e+01, 1.050000e+02, 1.150000e+02, 1.250000e+02, 1.350000e+02, 1.450000e+02, 1.550000e+02, 1.650000e+02, 1.750000e+02, 1.850000e+02, 1.950000e+02, 2.050000e+02, 2.168468e+02, 2.413490e+02, 2.807807e+02, 3.432505e+02, 4.273156e+02, 5.367156e+02, 6.654141e+02, 8.127816e+02, 9.690651e+02, 1.130935e+03, 1.289605e+03, 1.455770e+03, 1.622926e+03, 1.801558e+03, 1.984855e+03, 2.182905e+03, 2.388417e+03, 2.610935e+03, 2.842564e+03, 3.092205e+03, 3.351295e+03, 3.628058e+03, 3.913264e+03, 4.214495e+03, 4.521918e+03, 4.842566e+03, 5.166130e+03, 5.499245e+03, 5.831294e+03])
- lev_bnds(lev, bnds)float64dask.array<chunksize=(50, 2), meta=np.ndarray>
Array Chunk Bytes 800 B 800 B Shape (50, 2) (50, 2) Count 2 Tasks 1 Chunks Type float64 numpy.ndarray
- mlotst(member_id, time, j, i, lev)float32dask.array<chunksize=(1, 196, 300, 360, 50), meta=np.ndarray>
- cell_measures :
- area: areacello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Sigma T is potential density referenced to ocean surface.
- history :
- 2019-11-15T15:38:05Z altered by CMOR: replaced missing value flag (-1e+20) with standard missing value (1e+20).
- long_name :
- Ocean Mixed Layer Thickness Defined by Sigma T
- standard_name :
- ocean_mixed_layer_thickness_defined_by_sigma_t
- units :
- m
Array Chunk Bytes 42.77 GB 4.23 GB Shape (1, 1980, 300, 360, 50) (1, 196, 300, 360, 50) Count 189 Tasks 11 Chunks Type float32 numpy.ndarray - vertices_latitude(j, i, vertices, lev)float64dask.array<chunksize=(300, 360, 4, 50), meta=np.ndarray>
- units :
- degrees_north
Array Chunk Bytes 172.80 MB 172.80 MB Shape (300, 360, 4, 50) (300, 360, 4, 50) Count 21 Tasks 1 Chunks Type float64 numpy.ndarray - vertices_longitude(j, i, vertices, lev)float64dask.array<chunksize=(300, 360, 4, 50), meta=np.ndarray>
- units :
- degrees_east
Array Chunk Bytes 172.80 MB 172.80 MB Shape (300, 360, 4, 50) (300, 360, 4, 50) Count 21 Tasks 1 Chunks Type float64 numpy.ndarray - thetao(member_id, time, lev, j, i)float32dask.array<chunksize=(1, 5, 50, 300, 360), meta=np.ndarray>
- cell_measures :
- area: areacello volume: volcello
- cell_methods :
- area: mean where sea time: mean
- comment :
- Diagnostic should be contributed even for models using conservative temperature as prognostic field.
- long_name :
- Sea Water Potential Temperature
- standard_name :
- sea_water_potential_temperature
- units :
- degC
Array Chunk Bytes 42.77 GB 108.00 MB Shape (1, 1980, 50, 300, 360) (1, 5, 50, 300, 360) Count 5546 Tasks 396 Chunks Type float32 numpy.ndarray
- grid :
- native atmosphere N96 grid (145x192 latxlon)
- forcing_index :
- 1
- table_id :
- Omon
- variant_label :
- r1i1p1f1
- source :
- ACCESS-ESM1.5 (2019): aerosol: CLASSIC (v1.0) atmos: HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38 levels; top level 39255 m) atmosChem: none land: CABLE2.4 landIce: none ocean: ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m) ocnBgchem: WOMBAT (same grid as ocean) seaIce: CICE4.1 (same grid as ocean)
- tracking_id :
- hdl:21.14100/4ca9ce2d-6374-4e22-8ad3-1a5a6dfb8fde hdl:21.14100/5c349831-3686-44bd-a668-b5473685d419 hdl:21.14100/daa38aaf-a8b6-432b-8711-b8e3d73ba87f hdl:21.14100/79363e12-71ec-45ff-8ac7-5d9caaf123be hdl:21.14100/a0ac1b51-fd2a-49b3-ac10-cf7f1afeb09c hdl:21.14100/33ea2626-c182-4510-924f-833bfa6efada hdl:21.14100/20e5ecb1-cbe8-438f-945e-762dfbef1caf hdl:21.14100/115a1ec8-d7c7-44d0-ae29-860faf8daea8 hdl:21.14100/d85fa960-37cc-439f-ad46-acb60581b568 hdl:21.14100/da6b29c5-d498-456f-ac04-63d595d7721e hdl:21.14100/47712943-793d-45ab-acca-b62678bce71b hdl:21.14100/1a06ae50-aac9-4e42-bf90-365ecffa0fd6 hdl:21.14100/42c2ee1a-2dc2-4976-a781-e9ce77da01c1 hdl:21.14100/19003e14-c05a-42bc-87e2-697106b55748 hdl:21.14100/2d3419d6-fc7c-4d65-9e90-ae36411f6627 hdl:21.14100/b292c680-e324-487d-89af-5e95579a6adf hdl:21.14100/5533bdc5-d82b-48ec-acd2-d4f07903f67c hdl:21.14100/c26507e7-0f70-402c-9f87-741919c26350
- initialization_index :
- 1
- physics_index :
- 1
- run_variant :
- forcing: GHG, Oz, SA, Sl, Vl, BC, OC, (GHG = CO2, N2O, CH4, CFC11, CFC12, CFC113, HCFC22, HFC125, HFC134a)
- branch_time_in_parent :
- 21915.0
- history :
- 2019-11-15T15:38:06Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards. 2019-11-15T15:08:04Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.
- cmor_version :
- 3.4.0
- grid_label :
- gn
- nominal_resolution :
- 250 km
- intake_esm_varname :
- mlotst thetao
- experiment_id :
- historical
- realization_index :
- 1
- parent_activity_id :
- CMIP
- sub_experiment_id :
- none
- source_id :
- ACCESS-ESM1-5
- branch_time_in_child :
- 0.0
- parent_experiment_id :
- piControl
- activity_id :
- CMIP
- data_specs_version :
- 01.00.30
- realm :
- ocean
- product :
- model-output
- Conventions :
- CF-1.7 CMIP-6.2
- experiment :
- all-forcing simulation of the recent past
- mip_era :
- CMIP6
- institution :
- Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia
- branch_method :
- standard
- frequency :
- mon
- institution_id :
- CSIRO
- title :
- ACCESS-ESM1-5 output prepared for CMIP6
- table_info :
- Creation Date:(30 April 2019) MD5:e14f55f257cceafb2523e41244962371
- parent_variant_label :
- r1i1p1f1
- parent_mip_era :
- CMIP6
- parent_time_units :
- days since 0101-1-1
- further_info_url :
- https://furtherinfo.es-doc.org/CMIP6.CSIRO.ACCESS-ESM1-5.historical.none.r1i1p1f1
- sub_experiment :
- none
- source_type :
- AOGCM
- version :
- v20191115
- parent_source_id :
- ACCESS-ESM1-5
- license :
- CMIP6 model data produced by CSIRO is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.
- intake_esm_dataset_key :
- CMIP.CSIRO.ACCESS-ESM1-5.historical.Omon.gn
[43]:
roi = dict(i=150, time=0, j=slice(50, 100))
plt.figure(figsize=[10, 15])
for di, (data, label) in enumerate(zip([ds, ds_bot_removed], ['full data', 'bottom layer removed'])):
plt.subplot(2,1,di+1)
data.thetao.isel(lev=slice(38, -2),**roi).plot(yincrease=False, robust=True)
plt.title(label)
plt.grid()
[ ]: