Source code for bluemath_tk.teslakit.tides

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import xarray as xr


[docs] def Calculate_MMSL(xda_tide, year_ini, year_end): ''' Calculate monthly mean sea level xda_tide - xarray.DataArray (time,) ''' lout_mean = [] lout_median = [] lout_time = [] for yy in range(year_ini, year_end+1): for mm in range(1,13): d1 = np.datetime64('{0:04d}-{1:02d}'.format(yy,mm)) d2 = d1 + np.timedelta64(1, 'M') tide_sel_m = xda_tide.where( (xda_tide.time >= d1) & (xda_tide.time <= d2), drop = True)[:-2] time_sel = tide_sel_m.time.values if len(time_sel) >= 300: # mean, median and dates ts_mean = tide_sel_m.mean().values ts_median = tide_sel_m.median().values ts_time = time_sel[int(len(time_sel)/2)] lout_mean.append(ts_mean) lout_median.append(ts_median) lout_time.append(ts_time) # join output in xarray.Dataset xds_MMSL = xr.Dataset( { 'mmsl':(('time',), lout_mean), 'mmsl_median':(('time',), lout_median), }, coords = { 'time': lout_time } ) return xds_MMSL