ASIRI13 CTD χpod#
This is redoing my analysis.
We only have 100m of data.
Need to find out the “injection scale” of the spice. The ‘mean’ scale needs to be larger than that.
%load_ext watermark
%matplotlib inline
import glob
import os
import cf_xarray as cfxr
import cf_xarray.units
import cmocean as cmo
import dcpy
import distributed
import flox
import gsw
import holoviews as hv
import hvplot.xarray
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import pint_xarray
import scipy as sp
import tqdm
import xfilter
import xgcm
from cf_xarray.units import units
from IPython.display import Image
from scipy.io import loadmat
import eddydiff as ed
import xarray as xr
units.default_format = "~P"
xr.set_options(
keep_attrs=True, # use_flox=True
)
# cfxr.set_options(warn_on_missing_variables=False)
plt.rcParams["figure.dpi"] = 140
plt.rcParams["savefig.dpi"] = 200
plt.style.use("ggplot")
profile_hvplot_kwargs = dict(
by="cast",
y="pressure",
ylim=(2000, 0),
logx=True,
muted_alpha=0,
line_width=0.5,
aspect=1 / 2,
frame_width=250,
grid=True,
)
hv.extension("bokeh")
%watermark -iv
xr.DataArray([1.0])
The watermark extension is already loaded. To reload it, use:
%reload_ext watermark
distributed: 2022.4.0
cmocean : 2.0
holoviews : 1.14.8
gsw : 3.4.0
numpy : 1.22.3
scipy : 1.8.0
xarray : 0.20.3.dev137+g3f3a197c8
matplotlib : 3.5.1
cf_xarray : 0.7.1.dev16+g7305fd8
hvplot : 0.7.3
dcpy : 0.2.1.dev11+gebbbf87.d20220428
pandas : 1.4.2
xfilter : 0.2.1.dev6+g5fdc006
flox : 0.4.1
tqdm : 4.64.0
pint_xarray: 0.2.1
xgcm : 0.6.1
eddydiff : 0.1
<xarray.DataArray (dim_0: 1)> array([1.]) Dimensions without coordinates: dim_0
bob = xr.open_dataset("../datasets/ctd-chipod/asiri13/asiri13-ctd-chipod.nc").pipe(
ed.sections.add_ancillary_variables
)
bob
<xarray.Dataset>
Dimensions: (pressure: 110, cast: 86)
Coordinates:
* pressure (pressure) int64 1 3 5 7 9 11 ... 211 213 215 217 219
* cast (cast) int64 1 2 3 4 5 6 7 8 ... 79 80 81 82 83 84 85 86
datenum (cast) float64 nan nan nan nan nan ... nan nan nan nan
P (pressure, cast) float64 0.8012 0.5537 ... 218.9 219.0
lat (cast) float64 7.057 7.397 7.711 ... 5.772 5.464 5.153
lon (cast) float64 85.39 85.52 85.64 ... 85.1 85.01 84.88
reference_pressure int64 0
Data variables: (12/24)
chi (pressure, cast) float64 nan nan ... 2.576e-11 6.295e-10
eps (pressure, cast) float64 nan nan ... 7.806e-12 8.364e-11
KT (pressure, cast) float64 nan nan ... 4.847e-08 4.444e-07
Tz_orig (pressure, cast) float64 nan nan nan ... 0.01629 0.02483
fspd (pressure, cast) float64 0.009063 0.05923 ... -1.363
T (pressure, cast) float64 nan nan nan ... 13.08 12.92
... ...
chi_masked (pressure, cast) float64 nan nan ... 2.576e-11 6.295e-10
Krho (pressure, cast) float64 nan nan nan nan ... nan nan nan
KrhoTz (pressure, cast) float64 nan nan nan nan ... nan nan nan
eps_chi (pressure, cast) float64 nan nan nan nan ... nan nan nan
Kt (pressure, cast) float64 nan nan ... 1.208e-06 1.562e-07
KtTz (pressure, cast) float64 nan nan ... 3.944e-09 7.013e-09bob.τ0.cf.plot(x="profile_id", robust=True)
bob.chi.cf.plot(x="profile_id", robust=True, norm=mpl.colors.LogNorm())
<matplotlib.collections.QuadMesh at 0x17b0fb220>
Process MATLAB dataset#
mat = loadmat("../datasets/ctd-chipod/asiri13/ChiSumm.mat")
mat
{'__header__': b'MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Fri Mar 21 12:23:26 2014',
'__version__': '1.0',
'__globals__': [],
'big': array([[(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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), array([[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
10.2131389 , 10.52663334, 10.84223459, 11.1529007 , 11.46261088,
11.77690174, 12.08983376, 12.40212946, 12.71455374, 13.02672473,
13.34058601, 13.65197195, 13.96530173, 14.27824994, 14.59119192,
14.90360334, 15.21748382, 15.53077688, 15.84221765, 16.15566172,
16.15563791, 16.47003896, 16.78752216, 17.09837189, 17.46479681,
17.83022281, 17.59908039, 17.36816304, 17.13520797, 16.90342733,
16.67193724, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan]]), array([[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
86.56785749, 86.68248742, 86.80289888, 86.92038814, 87.03659096,
87.15290723, 87.27101469, 87.3879547 , 87.50751692, 87.62431287,
87.74252117, 87.86052031, 87.97881904, 88.09746991, 88.21625163,
88.3351862 , 88.45489118, 88.57449467, 88.6926163 , 88.81246269,
88.81246958, 88.9330456 , 89.05514751, 89.17372615, 89.31608551,
89.47250802, 89.19950917, 88.92785523, 88.65462787, 88.38143264,
88.10953641, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan]])) ,
(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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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]]), 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, 16.4416541 , 16.21094 , 15.97880551, 15.74700689,
15.51441952, 15.28397552, 15.04848751, 14.81951134, 14.58818587,
14.3567625 , 14.12507391, 13.8943746 , 13.66340595, 13.43371583,
13.20111682, 11.06325349, 10.84596661, 10.61411099, 10.38226802,
10.14973993, 9.91935172, 9.68685243, 9.68686483, 9.42051731,
9.23864495, 8.82259127, 8.63438682, 8.4466614 , 8.26014102,
8.07184252, 7.88523229, 7.88521763, 7.69760024, 7.69753767,
7.51098171, 7.32334292, nan, nan, nan,
nan]]), 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, 87.83838974, 87.56736127, 87.2921591 , 87.01933011,
86.74914252, 86.47685066, 86.19487961, 85.93106322, 85.65757139,
85.38813623, 85.11544521, 84.84294977, 84.56844812, 84.29489615,
84.02577693, 86.37022647, 86.70210823, 87.04442389, 87.38849089,
87.73233207, 88.07168522, 88.41504337, 88.41503714, 88.81597622,
88.85897671, 88.56337973, 88.26682718, 87.96921979, 87.67287809,
87.37625531, 87.07204615, 87.07202872, 86.78316 , 86.78311331,
86.48564106, 86.19102371, nan, nan, nan,
nan]])) ,
(array([[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
...,
[3.55640148e-10, nan, nan, ...,
6.53436170e-11, 1.49462485e-10, 1.73268590e-11],
[3.53868665e-10, nan, nan, ...,
9.22396144e-11, 1.19098979e-10, 2.71408726e-11],
[3.88629688e-10, nan, nan, ...,
1.58612992e-09, 7.81591224e-11, 2.19559101e-10]]), array([[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
...,
[1.39374894e-10, nan, nan, ...,
2.93447083e-11, 6.17182118e-11, 1.16632569e-11],
[1.39852679e-10, nan, nan, ...,
4.50380887e-11, 5.39164949e-11, 1.81751720e-11],
[1.67351502e-10, nan, nan, ...,
8.61612052e-10, 3.94723775e-11, 1.44322013e-10]]), 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]]), 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]]), array([[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
...,
[1.53869956e-06, nan, nan, ...,
4.37425073e-07, 6.51228240e-07, 1.37021345e-07],
[1.54858907e-06, nan, nan, ...,
7.14516190e-07, 5.72818073e-07, 2.12198974e-07],
[1.94554918e-06, nan, nan, ...,
1.43246404e-05, 4.25528762e-07, 1.67263895e-06]]), 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]]), array([[735567.13016917, 735567.25452014, 735567.3544217 , ...,
735579.22646592, 735579.34704056, 735579.46719185],
[735567.12987672, 735567.25393199, 735567.35400556, ...,
735579.22781584, 735579.34814722, 735579.46894341],
[735567.12967386, 735567.25380162, 735567.35376486, ...,
735579.22795147, 735579.34787811, 735579.46959074],
...,
[735567.11448576, nan, nan, ...,
735579.23403936, 735579.354464 , 735579.47579074],
[735567.11446354, nan, nan, ...,
735579.23406528, 735579.35448993, 735579.47582037],
[735567.11443021, nan, nan, ...,
735579.2340875 , 735579.35451215, 735579.47583889]]), array([[ 0.8011749 , 0.55366038, 1.77766268, ..., 0.66175267,
1.20075067, 0.75950595],
[ 3.25344453, 4.54365309, 3.23691113, ..., 3.4420654 ,
3.09304361, 3.16726668],
[ 5.2703318 , 4.98861861, 4.05073973, ..., 4.7048544 ,
4.61775781, 5.00660177],
...,
[395.35914737, nan, nan, ..., 394.92151813,
395.08318232, 394.56605986],
[396.81925928, nan, nan, ..., 397.26772211,
397.07587366, 396.98043638],
[399.26356642, nan, nan, ..., 398.88022262,
398.78535636, 399.3782545 ]]), array([[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
...,
[1.83566025e-05, nan, nan, ...,
1.35915550e-05, 1.88724233e-05, 1.69707466e-05],
[1.79340635e-05, nan, nan, ...,
1.27259315e-05, 1.87582154e-05, 1.71021243e-05],
[1.74273730e-05, nan, nan, ...,
1.22280323e-05, 1.85279905e-05, 1.72350495e-05]]), array([[ nan, nan, nan, ..., nan, nan,
nan],
[ nan, nan, nan, ..., nan, nan,
nan],
[ nan, nan, nan, ..., nan, nan,
nan],
...,
[0.01100834, nan, nan, ..., 0.00869735, 0.01099932,
0.00847565],
[0.01056415, nan, nan, ..., 0.00813541, 0.01005264,
0.00803489],
[0.01013987, nan, nan, ..., 0.00764566, 0.0094393 ,
0.00807694]]), array([[ 0.00906255, 0.05923452, 0.00491519, ..., -0.71511928,
nan, nan],
[ 0.03354296, 0.64772873, nan, ..., -0.77177713,
nan, nan],
[ nan, nan, nan, ..., -0.83877961,
nan, nan],
...,
[ 0.84681022, nan, nan, ..., -1.13264438,
-0.96067722, -1.0973467 ],
[ 0.75395349, nan, nan, ..., -0.94718385,
-0.85660051, -1.47009174],
[ 0.90898768, nan, nan, ..., -0.83602077,
-0.94979052, -1.52141864]]), array([[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[28.89731925, nan, 28.94435947, ..., nan,
nan, 28.75513024],
...,
[10.58979103, nan, nan, ..., 10.76557085,
11.27666869, 11.34498873],
[10.57397315, nan, nan, ..., 10.73996087,
11.24883417, 11.33249424],
[10.5591593 , nan, nan, ..., 10.72189124,
11.22184993, 11.31915558]]), array([[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[33.60258219, nan, 33.07107264, ..., nan,
nan, 34.30401581],
...,
[35.0338067 , nan, nan, ..., 35.06122016,
35.11155136, 35.10204881],
[35.03267524, nan, nan, ..., 35.06061575,
35.11024841, 35.1030033 ],
[35.03301073, nan, nan, ..., 35.06005303,
35.10882919, 35.1056982 ]]), 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]]), 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]]), array([[3.66885707e-01, 5.33524311e-01, 2.70153859e-01, ...,
4.81453798e-03, nan, nan],
[7.58798404e-01, 1.54543361e-02, nan, ...,
4.92053855e-02, nan, nan],
[ nan, nan, nan, ...,
5.23934434e-02, nan, nan],
...,
[2.62730168e-04, nan, nan, ...,
2.64953153e-04, 1.74256004e-04, 9.30581394e-05],
[2.50632341e-04, nan, nan, ...,
3.41625918e-04, 1.89592936e-04, 1.41026750e-04],
[3.48070201e-04, nan, nan, ...,
8.11860334e-04, 1.54049216e-04, 4.06407789e-04]]), 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]]), array([[ 7.05703834, 7.39735945, 7.71116077, 8.02686046, 8.33850993,
8.64745864, 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 12.71454231, 0. ,
13.34056439, 13.65197105, 13.96529315, 14.27826294, 0. ,
14.90361433, 15.21747316, 15.53077184, 15.84222023, 16.15565165,
16.15563467, 0. , 0. , 17.09837078, 17.46482334,
17.83021743, 17.59900882, 17.36814925, 17.13521177, 16.90342172,
16.6719217 , 16.4416541 , 16.21094 , 15.97880551, 15.74700689,
15.51441952, 15.28397552, 15.04848751, 14.81951134, 14.58818587,
14.3567625 , 14.12507391, 0. , 0. , 13.43371583,
13.20111682, 11.06325349, 0. , 0. , 10.38226802,
10.14973993, 9.91935172, 9.68685243, 9.68686483, 9.42051731,
9.23864495, 8.82259127, 8.63438682, 8.4466614 , 8.26014102,
8.07184252, 7.88523229, 7.88521763, 7.69760024, 7.69753767,
7.51098171, 7.32334292, 7.13593156, 6.94762871, 6.76062202,
6.42918785, 6.10287649, 0. , 5.7722026 , 5.46438158,
5.15255906]]), array([[85.39164 , 85.51998693, 85.63606553, 85.75485332, 85.87088057,
85.9846601 , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 87.5075082 , 0. ,
87.74253188, 87.86055155, 87.97878748, 88.09748617, 0. ,
88.33520352, 88.45489526, 88.57447157, 88.69260771, 88.81248282,
88.81246479, 0. , 0. , 89.17369947, 89.31609171,
89.47253315, 89.19951722, 88.92781776, 88.65462109, 88.38140056,
88.10947548, 87.83838974, 87.56736127, 87.2921591 , 87.01933011,
86.74914252, 86.47685066, 86.19487961, 85.93106322, 85.65757139,
85.38813623, 85.11544521, 0. , 0. , 84.29489615,
84.02577693, 86.37022647, 0. , 0. , 87.38849089,
87.73233207, 88.07168522, 88.41504337, 88.41503714, 88.81597622,
88.85897671, 88.56337973, 88.26682718, 87.96921979, 87.67287809,
87.37625531, 87.07204615, 87.07202872, 86.78316 , 86.78311331,
86.48564106, 86.19102371, 85.89465154, 85.59748279, 85.30051832,
85.2677321 , 85.19720608, 0. , 85.103513 , 85.0116706 ,
84.87871316]])) ]],
dtype=[('chi1', 'O'), ('eps1', 'O'), ('chi2', 'O'), ('eps2', 'O'), ('KT1', 'O'), ('KT2', 'O'), ('datenum', 'O'), ('P', 'O'), ('N2', 'O'), ('dTdz', 'O'), ('fspd', 'O'), ('T', 'O'), ('S', 'O'), ('theta', 'O'), ('sigma', 'O'), ('TP1var', 'O'), ('TP2var', 'O'), ('lat', 'O'), ('lon', 'O')])}
def _expand(ds):
return [
xr.concat([ds[0], xr.full_like(ds[0].isel(cast=slice(5)), np.nan)], dim="cast"),
xr.concat([ds[1], xr.full_like(ds[1].isel(cast=slice(5)), np.nan)], dim="cast"),
ds[2],
]
ds = xr.Dataset()
for name in mat["big"].dtype.names:
if "2" in name:
continue
data = mat["big"][name]
if data[0, 0].squeeze().ndim == 2:
dims = ("pressure", "cast")
else:
dims = ("cast",)
ds[name] = xr.concat(
_expand(
[
xr.DataArray(data=data[0, itrans].squeeze(), dims=dims)
for itrans in range(3)
]
),
dim="sensor",
)
ds = ds.where(ds.lat > 0)
# ds.coords["transect"] = ("cast", [1] * 81 + [2] * 81 + [3] * 86)
ds.coords["datenum"] = ds.datenum.isel(sensor=0, pressure=0)
ds["pressure"] = ("pressure", np.arange(1, 401, 2), {"axis": "Z", "positive": "down"})
ds["cast"] = ("cast", np.arange(ds.sizes["cast"]) + 1, {"cf_role": "profile_id"})
ds["sigma"] = dcpy.eos.pden(ds.S, ds.T, ds.P) - 1000
ds
<xarray.Dataset>
Dimensions: (sensor: 3, pressure: 200, cast: 86)
Coordinates:
datenum (cast) float64 nan nan nan nan nan ... nan nan nan nan
* pressure (pressure) int64 1 3 5 7 9 11 ... 391 393 395 397 399
* cast (cast) int64 1 2 3 4 5 6 7 8 ... 79 80 81 82 83 84 85 86
reference_pressure int64 0
Dimensions without coordinates: sensor
Data variables: (12/13)
chi1 (sensor, pressure, cast) float64 nan nan ... 2.196e-10
eps1 (sensor, pressure, cast) float64 nan nan ... 1.443e-10
KT1 (sensor, pressure, cast) float64 nan nan ... 1.673e-06
P (sensor, pressure, cast) float64 nan nan ... 398.8 399.4
dTdz (sensor, pressure, cast) float64 nan nan ... 0.008077
fspd (sensor, pressure, cast) float64 nan nan ... -1.521
... ...
S (sensor, pressure, cast) float64 nan nan ... 35.11 35.11
theta (sensor, pressure, cast) float64 nan nan nan ... nan nan
sigma (sensor, pressure, cast) float64 nan nan ... 26.83 26.81
TP1var (sensor, pressure, cast) float64 nan nan ... 0.0004064
lat (sensor, cast) float64 nan nan nan ... 5.772 5.464 5.153
lon (sensor, cast) float64 nan nan nan ... 85.1 85.01 84.88Combine “sensors”#
Here is Emily’s MATLAB Code:
nanmean(
cat(
3,
cat(2, big(1).chi1, nan(200, 5)),
cat(2, big(2).chi1, nan(200, 5)),
big(3).chi1,
),
3,
)
I think big(1) & big(2) are sensor1; big(3) is sensor 2.
The following plots confirm it
plt.figure()
ds.lat.plot(hue="sensor", marker="x", aspect=4, size=2)
turns = [36, 56, 65]
dcpy.plots.linex(turns)
plt.figure()
ds.lon.plot(hue="sensor", marker="x", aspect=4, size=2)
dcpy.plots.linex(turns)
print(np.abs(ds[["lat", "lon"]].diff("sensor").max()))
<xarray.Dataset>
Dimensions: ()
Data variables:
lat float64 0.0
lon float64 0.0
<Figure size 840x560 with 0 Axes>
<Figure size 840x560 with 0 Axes>
Final dataset#
# combine sensors
chi = (
ds.mean("sensor")
.cf.sel(Z=slice(220))
.set_coords(["lat", "lon", "datenum", "P"])
.rename_vars({"chi1": "chi", "eps1": "eps", "KT1": "KT"})
)
chi.S.attrs = {"standard_name": "sea_water_salinity"}
chi.T.attrs = {"standard_name": "sea_water_temperature", "units": "degC"}
chi.pressure.attrs.update({"standard_name": "sea_water_pressure", "units": "dbar"})
chi = chi.cf.guess_coord_axis()
chi.sigma.cf.plot(x="profile_id")
<matplotlib.collections.QuadMesh at 0x177466730>