ASIRI13 CTD χpod#

This is redoing my analysis.

  1. We only have 100m of data.

  2. 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-09
bob.τ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>
_images/03dd342024bcabd338f1397fd6250a64995e623d31c7dff4e4b8a16b7f58287d.png

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.88

Combine “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>
_images/7313aa176b1e78041a0335531e7a77286e3810d3fa4c6f8bc0222233c1b3558f.png
<Figure size 840x560 with 0 Axes>
_images/735b400cf47d2e4a35d5137340979ace610600838956fd524b97efa12db6565b.png

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>
_images/4cc681b208bd4c2128d97681a651598b629b7c3a3fd30985bcf6d540039a2a1c.png