From 007b845e2ccd51db91eb911e81a3f921408a070d Mon Sep 17 00:00:00 2001 From: Mark Bruggemann Date: Mon, 30 Oct 2023 20:47:57 +0000 Subject: [PATCH] Introduce upcrossing analysis module (#252) * Add test for loads.extreme.global_peaks function The loads_extreme.global_peaks function was previously missing a test. The test uses a simple function which can be independently analysed. The results of global_peaks and the independent analysis are then compared. * Introduce upcrossing module Previously there was no general means of performing an upcrossing analysis. The load.extreme.global_peaks function could only calculate peaks. The module provides some common methods but also the ability for the user to define their own function over the zero crossing points. * Implement loads.extreme.global_peaks in terms of upcrossing module With the recent addition of the upcrossing module, we can implement the loads.extreme.global_peaks function using it. * minor linting, module docstring, update parameter validation * fix upcrossing docstring * move upcrossing module to utils * update upcrossing import in example * fix last upcrossing docstring and move test to test/utils * update description in the upcrossing notebook * update import of upcrossing into test_upcrossing * typo in test file * final typo fix --------- Co-authored-by: akeeste --- examples/upcrossing_example.ipynb | 182 ++++++++++++++++++++ mhkit/loads/extreme.py | 36 ++-- mhkit/tests/loads/test_extreme.py | 51 ++++++ mhkit/tests/utils/test_upcrossing.py | 142 ++++++++++++++++ mhkit/utils/__init__.py | 1 + mhkit/utils/upcrossing.py | 238 +++++++++++++++++++++++++++ 6 files changed, 632 insertions(+), 18 deletions(-) create mode 100644 examples/upcrossing_example.ipynb create mode 100644 mhkit/tests/loads/test_extreme.py create mode 100644 mhkit/tests/utils/test_upcrossing.py create mode 100644 mhkit/utils/upcrossing.py diff --git a/examples/upcrossing_example.ipynb b/examples/upcrossing_example.ipynb new file mode 100644 index 000000000..52bbd34f5 --- /dev/null +++ b/examples/upcrossing_example.ipynb @@ -0,0 +1,182 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MHKit Upcrossing Analysis Example\n", + "\n", + "The following shows an example of using the upcrossing functionality in the [MHKiT Utils module](https://mhkit-software.github.io/MHKiT/mhkit-python/api.utils.html).\n", + "\n", + "This example performs an upcrossing analysis on a surface elevation trace to plot some quantities of interest. Such an upcrossing analysis could be applied to any time domain signal, such as a device response." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from mhkit.wave.resource import jonswap_spectrum, surface_elevation\n", + "from mhkit.utils import upcrossing, peaks, troughs, heights, periods\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compute the surface elevation" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Peak period and significant wave height\n", + "Tp = 10 # s\n", + "Hs = 2.5 # m\n", + "gamma = 3.3\n", + "\n", + "# Create frequency vector using a return period of 1hr\n", + "Tr = 3600 # s\n", + "df = 1.0 / Tr # Hz\n", + "f = np.arange(0, 1, df)\n", + " \n", + "# Calculate spectrum\n", + "spec = jonswap_spectrum(f, Tp, Hs, gamma)\n", + "\n", + "# Calculate surface elevation\n", + "fs = 10.0 # Hz\n", + "t = np.arange(0, Tr, 1 / fs)\n", + "\n", + "eta = surface_elevation(spec, t)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plt.plot(t, eta)\n", + "plt.xlabel('t [s]')\n", + "plt.ylabel('$\\eta$ [m]')\n", + "plt.title(f\"Surface elevation for Tp={Tp}s, Hs={Hs}m\")\n", + "plt.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the individual wave heights and periods" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "heights = heights(t, eta.values.squeeze())\n", + "periods = periods(t, eta.values.squeeze())\n", + "\n", + "plt.figure()\n", + "plt.plot(periods, heights, 'o')\n", + "plt.xlabel('Zero crossing period [s]')\n", + "plt.ylabel('Wave height [m]')\n", + "plt.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot the crest probability of exceedance distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "crests = peaks(t, eta.values.squeeze())\n", + "crests_sorted = np.sort(crests)\n", + "\n", + "N = crests_sorted.size\n", + "\n", + "# Exceedance probability. Crests are in ascending order\n", + "# meaning the first element has P(exceedance) = 1, and\n", + "# the final element has P(exceedance) = 1 / N\n", + "Q = np.arange(N, 0, -1) / N\n", + "\n", + "plt.figure()\n", + "plt.semilogy(crests_sorted, Q, 'o')\n", + "plt.xlabel('Crest height [m]')\n", + "plt.ylabel('P(exceedance)')\n", + "plt.grid()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/mhkit/loads/extreme.py b/mhkit/loads/extreme.py index 6dc69f63a..c364b14a5 100644 --- a/mhkit/loads/extreme.py +++ b/mhkit/loads/extreme.py @@ -2,6 +2,7 @@ import pandas as pd from scipy import stats, optimize, signal from mhkit.wave.resource import frequency_moment +from mhkit.utils import upcrossing, custom def _peaks_over_threshold(peaks, threshold, sampling_rate): threshold_unit = np.percentile(peaks, 100*threshold, method='hazen') @@ -61,24 +62,23 @@ def global_peaks(t, data): assert isinstance(t, np.ndarray), 't must be of type np.ndarray' assert isinstance(data, np.ndarray), 'data must be of type np.ndarray' - # eliminate zeros - zeroMask = (data == 0) - data[zeroMask] = 0.5 * np.min(np.abs(data)) - # zero up-crossings - diff = np.diff(np.sign(data)) - zeroUpCrossings_mask = (diff == 2) | (diff == 1) - zeroUpCrossings_index = np.where(zeroUpCrossings_mask)[0] - zeroUpCrossings_index = np.append(zeroUpCrossings_index, len(data) - 1) - # global peaks - npeaks = len(zeroUpCrossings_index) - peaks = np.array([]) - t_peaks = np.array([]) - for i in range(npeaks - 1): - peak_index = np.argmax( - data[zeroUpCrossings_index[i]:zeroUpCrossings_index[i + 1]]) - t_peaks = np.append(t_peaks, t[zeroUpCrossings_index[i] + peak_index]) - peaks = np.append(peaks, data[zeroUpCrossings_index[i] + peak_index]) - return t_peaks, peaks + # Find zero up-crossings + inds = upcrossing(t, data) + + # We also include the final point in the dataset + inds = np.append(inds, len(data)-1) + + # As we want to return both the time and peak + # values, look for the index at the peak. + # The call to argmax gives us the index within the + # upcrossing period. Therefore to get the index in the + # original array we need to add on the index that + # starts the zero crossing period, ind1. + func = lambda ind1, ind2: np.argmax(data[ind1:ind2]) + ind1 + + peak_inds = np.array(custom(t, data, func, inds), dtype=int) + + return t[peak_inds], data[peak_inds] def number_of_short_term_peaks(n, t, t_st): diff --git a/mhkit/tests/loads/test_extreme.py b/mhkit/tests/loads/test_extreme.py new file mode 100644 index 000000000..0454296f9 --- /dev/null +++ b/mhkit/tests/loads/test_extreme.py @@ -0,0 +1,51 @@ +import numpy as np +import unittest +import mhkit.loads as loads +from numpy.testing import assert_allclose + + +class TestExtreme(unittest.TestCase): + @classmethod + def setUpClass(self): + self.t, self.signal = self._example_waveform(self) + + def _example_waveform(self): + # Create simple wave form to analyse. + # This has been created to perform + # a simple independent calcuation that + # the mhkit functions can be tested against. + + A = np.array([0.5, 0.6, 0.3]) + T = np.array([3, 2, 1]) + w = 2 * np.pi / T + + t = np.linspace(0, 4.5, 100) + + signal = np.zeros(t.size) + for i in range(A.size): + signal += A[i] * np.sin(w[i] * t) + + return t, signal + + def _example_crest_analysis(self, t, signal): + # NB: This only works due to the construction + # of our test signal. It is not suitable as + # a general approach. + grad = np.diff(signal) + + # +1 to get the index at turning point + turning_points = np.flatnonzero(grad[1:] * grad[:-1] < 0) + 1 + + crest_inds = turning_points[signal[turning_points] > 0] + crests = signal[crest_inds] + + return crests, crest_inds + + def test_global_peaks(self): + peaks_t, peaks_val = loads.extreme.global_peaks(self.t, self.signal) + + test_crests, test_crests_ind = self._example_crest_analysis( + self.t, self.signal) + + assert_allclose(peaks_t, self.t[test_crests_ind]) + assert_allclose(peaks_val, test_crests) diff --git a/mhkit/tests/utils/test_upcrossing.py b/mhkit/tests/utils/test_upcrossing.py new file mode 100644 index 000000000..986774de3 --- /dev/null +++ b/mhkit/tests/utils/test_upcrossing.py @@ -0,0 +1,142 @@ +from mhkit.utils import upcrossing, peaks, troughs, heights, periods, custom +import unittest +from numpy.testing import assert_allclose +import numpy as np +from scipy.optimize import fsolve + + +class TestUpcrossing(unittest.TestCase): + @classmethod + def setUpClass(self): + self.t = np.linspace(0, 4, 1000) + + self.signal = self._example_waveform(self, self.t) + + # Approximiate points for the zero crossing, + # used as starting points in numerical + # solution. + self.zero_cross_approx = [0, 2.1, 3, 3.8] + + def _example_waveform(self, t): + # Create simple wave form to analyse. + # This has been created to perform + # a simple independent calcuation that + # the mhkit functions can be tested against. + + A = np.array([0.5, 0.6, 0.3]) + T = np.array([3, 2, 1]) + w = 2 * np.pi / T + + signal = np.zeros(t.size) + for i in range(A.size): + signal += A[i] * np.sin(w[i] * t) + + return signal + + def _example_analysis(self, t, signal): + # NB: This only works due to the construction + # of our test signal. It is not suitable as + # a general approach. + grad = np.diff(signal) + + # +1 to get the index at turning point + turning_points = np.flatnonzero(grad[1:] * grad[:-1] < 0) + 1 + + crest_inds = turning_points[signal[turning_points] > 0] + trough_inds = turning_points[signal[turning_points] < 0] + + crests = signal[crest_inds] + troughs = signal[trough_inds] + + heights = crests - troughs + + zero_cross = fsolve(self._example_waveform, self.zero_cross_approx) + periods = np.diff(zero_cross) + + return crests, troughs, heights, periods + + def test_peaks(self): + want, _, _, _ = self._example_analysis(self.t, self.signal) + + got = peaks(self.t, self.signal) + + assert_allclose(got, want) + + def test_troughs(self): + _, want, _, _ = self._example_analysis(self.t, self.signal) + + got = troughs(self.t, self.signal) + + assert_allclose(got, want) + + def test_heights(self): + _, _, want, _ = self._example_analysis(self.t, self.signal) + + got = heights(self.t, self.signal) + + assert_allclose(got, want) + + def test_periods(self): + _, _, _, want = self._example_analysis(self.t, self.signal) + + got = periods(self.t, self.signal) + + assert_allclose(got, want, rtol=1e-3, atol=1e-3) + + def test_custom(self): + want, _, _, _ = self._example_analysis(self.t, self.signal) + + # create a similar function to finding the peaks + def f(ind1, ind2): return np.max(self.signal[ind1:ind2]) + + got = custom(self.t, self.signal, f) + + assert_allclose(got, want) + + def test_peaks_with_inds(self): + want, _, _, _ = self._example_analysis(self.t, self.signal) + + inds = upcrossing(self.t, self.signal) + + got = peaks(self.t, self.signal, inds) + + assert_allclose(got, want) + + def test_trough_with_inds(self): + _, want, _, _ = self._example_analysis(self.t, self.signal) + + inds = upcrossing(self.t, self.signal) + + got = troughs(self.t, self.signal, inds) + + assert_allclose(got, want) + + def test_heights_with_inds(self): + _, _, want, _ = self._example_analysis(self.t, self.signal) + + inds = upcrossing(self.t, self.signal) + + got = heights(self.t, self.signal, inds) + + assert_allclose(got, want) + + def test_periods_with_inds(self): + _, _, _, want = self._example_analysis(self.t, self.signal) + + inds = upcrossing(self.t, self.signal) + + got = periods(self.t, self.signal, inds) + + assert_allclose(got, want, rtol=1e-3, atol=1e-3) + + def test_custom_with_inds(self): + want, _, _, _ = self._example_analysis(self.t, self.signal) + + inds = upcrossing(self.t, self.signal) + + # create a similar function to finding the peaks + def f(ind1, ind2): return np.max(self.signal[ind1:ind2]) + + got = custom(self.t, self.signal, f, inds) + + assert_allclose(got, want) diff --git a/mhkit/utils/__init__.py b/mhkit/utils/__init__.py index bacf3a46a..442d4f949 100644 --- a/mhkit/utils/__init__.py +++ b/mhkit/utils/__init__.py @@ -1,5 +1,6 @@ from .time_utils import matlab_to_datetime, excel_to_datetime, index_to_datetime from .stat_utils import get_statistics, vector_statistics, unwrap_vector, magnitude_phase, unorm from .cache import handle_caching, clear_cache +from .upcrossing import upcrossing, peaks, troughs, heights, periods, custom _matlab = False # Private variable indicating if mhkit is run through matlab diff --git a/mhkit/utils/upcrossing.py b/mhkit/utils/upcrossing.py new file mode 100644 index 000000000..5a244124f --- /dev/null +++ b/mhkit/utils/upcrossing.py @@ -0,0 +1,238 @@ +""" +Upcrossing Analysis Functions +============================= +This module contains a collection of functions that facilitate upcrossing +analyses. + +Key Functions: +-------------- +- `upcrossing`: Finds the zero upcrossing points. + +- `peaks`: Finds the peaks between zero crossings. + +- `troughs`: Finds the troughs between zero crossings. + +- `heights`: Calculates the height between zero crossings. + +- `periods`: Calculates the period between zero crossings. + +- `custom`: Applies a custom, user-defined function between zero crossings. + +Dependencies: +------------- +- numpy: Data analysis + +Author: +------- +mbruggs +akeeste + +Date: +----- +2023-10-10 + + +""" +import numpy as np + + +def _apply(t, data, f, inds): + if inds is None: + inds = upcrossing(t, data) + + n = inds.size - 1 + + vals = np.empty(n) + for i in range(n): + vals[i] = f(inds[i], inds[i+1]) + + return vals + + +def upcrossing(t, data): + """ + Finds the zero upcrossing points. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time series. + + Returns + ------- + inds: np.array + Zero crossing indices + """ + if not isinstance(t, np.ndarray): + raise TypeError('t must be of type np.ndarray') + + if not isinstance(t, np.ndarray): + 'data must be of type np.ndarray' + + if len(data.shape) != 1: + raise ValueError('only 1D data supported, try calling squeeze()') + + # eliminate zeros + zeroMask = (data == 0) + data[zeroMask] = 0.5 * np.min(np.abs(data)) + + # zero up-crossings + diff = np.diff(np.sign(data)) + zeroUpCrossings_mask = (diff == 2) | (diff == 1) + zeroUpCrossings_index = np.where(zeroUpCrossings_mask)[0] + + return zeroUpCrossings_index + + +def peaks(t, data, inds=None): + """ + Finds the peaks between zero crossings. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time-series. + inds: np.array + Optional indices for the upcrossing. Useful + when using several of the upcrossing methods + to avoid repeating the upcrossing analysis + each time. + + Returns + ------- + peaks: np.array + Peak values of the time-series + + """ + if not isinstance(t, np.ndarray): + TypeError('t must be of type np.ndarray') + + if not isinstance(data, np.ndarray): + TypeError('data must be of type np.ndarray') + + return _apply(t, data, lambda ind1, ind2: np.max(data[ind1:ind2]), inds) + + +def troughs(t, data, inds=None): + """ + Finds the troughs between zero crossings. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time-series. + inds: np.array + Optional indices for the upcrossing. Useful + when using several of the upcrossing methods + to avoid repeating the upcrossing analysis + each time. + + Returns + ------- + troughs: np.array + Trough values of the time-series + + """ + assert isinstance(t, np.ndarray), 't must be of type np.ndarray' + assert isinstance(data, np.ndarray), 'data must be of type np.ndarray' + + return _apply(t, data, lambda ind1, ind2: np.min(data[ind1:ind2]), inds) + + +def heights(t, data, inds=None): + """ + Calculates the height between zero crossings. + + The height is defined as the max value - min value + between the zero crossing points. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time-series. + inds: np.array + Optional indices for the upcrossing. Useful + when using several of the upcrossing methods + to avoid repeating the upcrossing analysis + each time. + + Returns + ------- + heights: np.array + Height values of the time-series + """ + assert isinstance(t, np.ndarray), 't must be of type np.ndarray' + assert isinstance(data, np.ndarray), 'data must be of type np.ndarray' + + def func(ind1, ind2): + return np.max(data[ind1:ind2]) - np.min(data[ind1:ind2]) + + return _apply(t, data, func, inds) + + +def periods(t, data, inds=None): + """ + Calculates the period between zero crossings. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time-series. + inds: np.array + Optional indices for the upcrossing. Useful + when using several of the upcrossing methods + to avoid repeating the upcrossing analysis + each time. + + Returns + ------- + periods: np.array + Period values of the time-series + """ + assert isinstance(t, np.ndarray), 't must be of type np.ndarray' + assert isinstance(data, np.ndarray), 'data must be of type np.ndarray' + + return _apply(t, data, lambda ind1, ind2: t[ind2] - t[ind1], inds) + + +def custom(t, data, func, inds=None): + """ + Applies a custom function to the timeseries data between upcrossing points. + + Parameters + ---------- + t: np.array + Time array. + data: np.array + Signal time-series. + func: f(ind1, ind2) -> np.array + Function to apply between the zero crossing periods + given t[ind1], t[ind2], where ind1 < ind2, correspond + to the start and end of an upcrossing section. + inds: np.array + Optional indices for the upcrossing. Useful + when using several of the upcrossing methods + to avoid repeating the upcrossing analysis + each time. + + Returns + ------- + values: np.array + Custom values of the time-series + """ + + assert isinstance(t, np.ndarray), 't must be of type np.ndarray' + assert isinstance(data, np.ndarray), 'data must of type np.ndarray' + assert callable(func), 'f must be callable' + + return _apply(t, data, func, inds)