In [1]:
%matplotlib inline
from IPython.lib.pretty import pprint
import logging
logger = logging.getLogger('gutils')
logger.handlers = [logging.StreamHandler()]
logger.setLevel(logging.DEBUG)

def plot_profiles(default_df, z=None, t=None):
    import matplotlib.dates as mpd
    import matplotlib.pyplot as plt
    t = t or 't'
    z = z or 'z'
    df = default_df.copy()
    df[z] = df[z].values * -1
    df[t] = mpd.date2num(df[t].dt.to_pydatetime())
    df.plot.scatter(x=t, y=z, c='profile', cmap='inferno', figsize=(18,10,))
    plt.show()

In [2]:
from pathlib import Path
from gutils.slocum import SlocumReader
from pocean.dsg import ContiguousRaggedTrajectoryProfile as crtp

data_folder = Path('.').absolute().parent.parent / 'gutils' / 'tests' / 'resources' / 'slocum'
nc_file = data_folder / 'full_deployment.nc'

df = None
axes = {
    't': 'time',
    'x': 'lon',
    'y': 'lat',
    'z': 'depth'
}
with crtp(nc_file) as ncd:
    df = ncd.to_dataframe(axes=axes)

In [3]:
df


Out[3]:
time lon lat depth trajectory profile trajectory_id trajectoryIndex rowSize profile_time ... density lat_uv lon_uv m_altitude pressure salinity temperature time_uv u v
0 2017-09-05 18:24:16.707060 -75.387364 35.852015 0.276583 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 0.278615 NaN NaN NaN NaN NaN
1 2017-09-05 18:24:16.707060 -75.387364 35.852015 0.513476 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 0.517247 NaN NaN NaN NaN NaN
2 2017-09-05 18:24:16.707060 -75.387364 35.852015 0.910975 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 0.917665 NaN NaN NaN NaN NaN
3 2017-09-05 18:24:16.707060 -75.387364 35.852015 1.565440 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 1.576934 NaN NaN NaN NaN NaN
4 2017-09-05 18:24:16.707060 -75.387364 35.852015 2.135590 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 2.151267 NaN NaN NaN NaN NaN
5 2017-09-05 18:24:16.707060 -75.387364 35.852015 3.103240 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 3.126013 NaN NaN NaN NaN NaN
6 2017-09-05 18:24:16.707060 -75.387364 35.852015 3.741650 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 3.769102 NaN NaN NaN NaN NaN
7 2017-09-05 18:24:16.707060 -75.387364 35.852015 4.335890 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 4.367696 NaN NaN NaN NaN NaN
8 2017-09-05 18:24:16.707060 -75.387364 35.852015 4.845810 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 4.881350 NaN NaN NaN NaN NaN
9 2017-09-05 18:24:16.707060 -75.387364 35.852015 5.086720 1504635856 ramses-20170905T1728 0 10 8.734839e+08 ... NaN NaN NaN NaN 5.124024 NaN NaN NaN NaN NaN
10 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.532400 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.572967 NaN NaN NaN NaN NaN
11 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.516340 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.556789 NaN NaN NaN NaN NaN
12 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.428010 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.467813 NaN NaN NaN NaN NaN
13 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.351720 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.390964 NaN NaN NaN NaN NaN
14 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.303540 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN 22.1429 5.342431 NaN NaN NaN NaN NaN
15 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.179070 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.217050 NaN NaN NaN NaN NaN
16 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.078690 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.115935 NaN NaN NaN NaN NaN
17 2017-09-05 18:24:21.596470 -75.387252 35.852339 5.002400 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 5.039087 NaN NaN NaN NaN NaN
18 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.922100 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.958199 NaN NaN NaN NaN NaN
19 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.889980 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.925844 NaN NaN NaN NaN NaN
20 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.877930 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.913706 NaN NaN NaN NaN NaN
21 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.785580 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.820679 NaN NaN NaN NaN NaN
22 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.737400 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.772147 NaN NaN NaN NaN NaN
23 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.645050 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.679120 NaN NaN NaN NaN NaN
24 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.512550 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.545650 NaN NaN NaN NaN NaN
25 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.460360 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.493078 NaN NaN NaN NaN NaN
26 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.416190 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.448584 NaN NaN NaN NaN NaN
27 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.227480 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.258492 NaN NaN NaN NaN NaN
28 2017-09-05 18:24:21.596470 -75.387252 35.852339 4.179300 1504635907 ramses-20170905T1728 0 19 8.734839e+08 ... NaN NaN NaN NaN 4.209959 NaN NaN NaN NaN NaN
29 2017-09-05 18:24:26.251830 -75.387141 35.852664 3.725590 1504636018 ramses-20170905T1728 0 21 8.734841e+08 ... NaN NaN NaN NaN 3.752925 NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
48343 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.896489 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.629817 NaN NaN NaN 5.940000 31.561933 25.4796 NaN NaN NaN
48344 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.707884 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.609353 NaN NaN NaN 5.750000 31.532968 25.4724 NaN NaN NaN
48345 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.529205 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.599989 NaN NaN NaN 5.570000 31.520569 25.4699 NaN NaN NaN
48346 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.360452 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.589420 NaN NaN NaN 5.400000 31.507602 25.4701 NaN NaN NaN
48347 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.201626 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.585545 NaN NaN NaN 5.240000 31.504953 25.4740 NaN NaN NaN
48348 2017-09-05 22:24:10.988920 -75.391490 35.892790 5.052726 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.581253 NaN NaN NaN 5.090000 31.499837 25.4733 NaN NaN NaN
48349 2017-09-05 22:24:10.988920 -75.391490 35.892790 4.883973 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.582133 NaN NaN NaN 4.920000 31.502062 25.4735 NaN NaN NaN
48350 2017-09-05 22:24:10.988920 -75.391490 35.892790 4.705293 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.575950 NaN NaN NaN 4.740000 31.494329 25.4721 NaN NaN NaN
48351 2017-09-05 22:24:10.988920 -75.391490 35.892790 4.516686 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.573121 NaN NaN NaN 4.550000 31.491868 25.4726 NaN NaN NaN
48352 2017-09-05 22:24:10.988920 -75.391490 35.892790 4.328080 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.570221 NaN NaN NaN 4.360000 31.488628 25.4714 NaN NaN NaN
48353 2017-09-05 22:24:10.988920 -75.391490 35.892790 4.129546 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.563838 NaN NaN NaN 4.160000 31.479655 25.4673 NaN NaN NaN
48354 2017-09-05 22:24:10.988920 -75.391490 35.892790 3.940939 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.559024 NaN NaN NaN 3.970000 31.474198 25.4669 NaN NaN NaN
48355 2017-09-05 22:24:10.988920 -75.391490 35.892790 3.742404 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.558933 NaN NaN NaN 3.770000 31.473776 25.4633 NaN NaN NaN
48356 2017-09-05 22:24:10.988920 -75.391490 35.892790 3.524017 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.551810 NaN NaN NaN 3.550000 31.465750 25.4637 NaN NaN NaN
48357 2017-09-05 22:24:10.988920 -75.391490 35.892790 3.305629 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.548534 NaN NaN NaN 3.330000 31.462627 25.4636 NaN NaN NaN
48358 2017-09-05 22:24:10.988920 -75.391490 35.892790 3.107094 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.543973 NaN NaN NaN 3.130000 31.457927 25.4641 NaN NaN NaN
48359 2017-09-05 22:24:10.988920 -75.391490 35.892790 2.918486 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.542536 NaN NaN NaN 2.940000 31.457192 25.4643 NaN NaN NaN
48360 2017-09-05 22:24:10.988920 -75.391490 35.892790 2.729877 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.539423 NaN NaN NaN 2.750000 31.453267 25.4621 NaN NaN NaN
48361 2017-09-05 22:24:10.988920 -75.391490 35.892790 2.531342 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.537043 NaN NaN NaN 2.550000 31.451460 25.4626 NaN NaN NaN
48362 2017-09-05 22:24:10.988920 -75.391490 35.892790 2.332807 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.534639 NaN NaN NaN 2.350000 31.449420 25.4626 NaN NaN NaN
48363 2017-09-05 22:24:10.988920 -75.391490 35.892790 2.144198 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.535168 NaN NaN NaN 2.160000 31.451052 25.4622 NaN NaN NaN
48364 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.935735 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.533679 NaN NaN NaN 1.950000 31.450162 25.4619 NaN NaN NaN
48365 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.747126 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.531857 NaN NaN NaN 1.760000 31.449079 25.4625 NaN NaN NaN
48366 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.578370 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.529366 NaN NaN NaN 1.590000 31.446267 25.4613 NaN NaN NaN
48367 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.429468 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.526925 NaN NaN NaN 1.440000 31.443689 25.4608 NaN NaN NaN
48368 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.300419 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.525789 NaN NaN NaN 1.310000 31.443009 25.4610 NaN NaN NaN
48369 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.191224 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.524354 NaN NaN NaN 1.200000 31.441818 25.4612 NaN NaN NaN
48370 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.111809 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.524711 NaN NaN NaN 1.120000 31.442389 25.4603 NaN NaN NaN
48371 2017-09-05 22:24:10.988920 -75.391490 35.892790 1.022467 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.524670 NaN NaN NaN 1.030000 31.442691 25.4599 NaN NaN NaN
48372 2017-09-05 22:24:10.988920 -75.391490 35.892790 0.943053 1504805687 ramses-20170905T1728 0 129 8.736538e+08 ... 1020.525436 NaN NaN NaN 0.950000 31.443844 25.4591 NaN NaN NaN

48373 rows × 24 columns


In [4]:
from gutils.yo import assign_profiles
df2 = df.copy()
df2 = df2.rename(columns={'time': 't', 'lon': 'x', 'lat': 'y', 'depth': 'z'})
df2 = assign_profiles(df2)
plot_profiles(df2)



In [5]:
import matplotlib.dates as mpd
import matplotlib.pyplot as plt
df3 = df2.copy()
df3['z'] = df3.z.values * -1
df3['t'] = mpd.date2num(df3.t.dt.to_pydatetime())
df3.plot.scatter(x='t', y='z', c='temperature', cmap='viridis', title='Temperature', figsize=(18,10))
df3.plot.scatter(x='t', y='z', c='salinity', cmap='plasma', title='Salinity', figsize=(18,10))
plt.show()