# Utils Module

The utils module includes helper functions. The module currently contains a single function to help users convert numeric indexes to datetime indexes. Additional helper functions could be added at a later date.

 `get_statistics` Calculate mean, max, min and stdev statistics of continuous data for a given statistical window. `unwrap_vector` Function used to unwrap vectors into 0-360 deg range `matlab_to_datetime` Convert MATLAB datenum format to Python datetime `excel_to_datetime` Convert Excel datenum format to Python datetime `index_to_datetime` Convert DataFrame index from int/float to datetime, rounds datetime to the nearest millisecond
mhkit.utils.get_statistics(data, freq, period=600, vector_channels=[])[source]

Calculate mean, max, min and stdev statistics of continuous data for a given statistical window. Default length of statistical window (period) is based on IEC TS 62600-3:2020 ED1. Also allows calculation of statistics for multiple statistical windows of continuous data and accounts for vector/directional channels.

Parameters
• data (pandas DataFrame) – Data indexed by datetime with columns of data to be analyzed

• freq (float/int) – Sample rate of data [Hz]

• period (float/int) – Statistical window of interest [sec], default = 600

• vector_channels (string or list (optional)) – List of vector/directional channel names formatted in deg (0-360)

Returns

means,maxs,mins,stdevs (pandas DataFrame) – Calculated statistical values from the data, indexed by the first timestamp

mhkit.utils.vector_statistics(data)[source]

Function used to calculate statistics for vector/directional channels based on routine from Campbell data logger and Yamartino algorithm

Parameters

data (pandas Series, numpy array, list) – Vector channel to calculate statistics on [deg, 0-360]

Returns

• vector_avg (numpy array) – Vector mean statistic

• vector_std (numpy array) – Vector standard deviation statistic

mhkit.utils.unwrap_vector(data)[source]

Function used to unwrap vectors into 0-360 deg range

Parameters

data (pandas Series, numpy array, list) – Data points to be unwrapped [deg]

Returns

data (numpy array) – Data points unwrapped between 0-360 deg

mhkit.utils.matlab_to_datetime(matlab_datenum)[source]

Convert MATLAB datenum format to Python datetime

Parameters

matlab_datenum (numpy array) – MATLAB datenum to be converted

Returns

time (DateTimeIndex) – Python datetime values

mhkit.utils.excel_to_datetime(excel_num)[source]

Convert Excel datenum format to Python datetime

Parameters

excel_num (numpy array) – Excel datenums to be converted

Returns

time (DateTimeIndex) – Python datetime values

mhkit.utils.magnitude_phase(x, y, z=None)[source]

Retuns magnitude and phase in two or three dimensions.

Parameters
• x (array_like) – x-component

• y (array_like) – y-component

• z (array_like) – z-component defined positive up. (Optional) Default None.

Returns

• mag (float or array) – magnitude of the vector

• theta (float or array) – radians from the x-axis

• phi (float or array) – radians from z-axis defined as positive up. Optional: only returned when z is passed.

mhkit.utils.unorm(x, y, z)[source]

Calculates the root mean squared value given three arrays.

Parameters
• x (array) – One input for the root mean squared calculation.(eq. x velocity)

• y (array) – One input for the root mean squared calculation.(eq. y velocity)

• z (array) – One input for the root mean squared calculation.(eq. z velocity)

Returns

unorm (array) – The root mean squared of x, y, and z.

Example

If the inputs are [1,2,3], [4,5,6], and [7,8,9] the code take the cordinationg value from each array and calculates the root mean squared. The resulting output is [ 8.1240384, 9.64365076, 11.22497216].

mhkit.utils.index_to_datetime(index, unit='s', origin='unix')[source]

Convert DataFrame index from int/float to datetime, rounds datetime to the nearest millisecond

Parameters
• index (pandas Index) – DataFrame index in int or float

• unit (str, optional) – Units of the original index

• origin (str) – Reference date used to define the starting time. If origin = ‘unix’, the start time is ‘1970-01-01 00:00:00’ The origin can also be defined using a datetime string in a similar format (i.e. ‘2019-05-17 16:05:45’)

Returns

pandas Index – DataFrame index in datetime