# -*- coding:utf-8 -*- """ Created on 5. aug. 2010 @author: pab """ import unittest from numpy.testing import TestCase, assert_array_almost_equal import wafo.data # @UnusedImport import numpy as np # @UnusedImport import wafo.objects as wo import wafo.spectrum.models as sm import wafo.transform.models as tm class TestObjects(TestCase): def test_timeseries(self): x = wafo.data.sea() ts = wo.mat2timeseries(x) assert_array_almost_equal(ts.sampling_period(), 0.25) S = ts.tospecdata() assert_array_almost_equal(S.data[:10], [0.00913087, 0.00881073, 0.00791944, 0.00664244, 0.00522429, 0.00389816, 0.00282753, 0.00207843, 0.00162678, 0.0013916]) rf = ts.tocovdata(lag=150) assert_array_almost_equal(rf.data[:10], [0.22368637, 0.20838473, 0.17110733, 0.12237803, 0.07024054, 0.02064859, -0.02218831, -0.0555993, -0.07859847, -0.09166187]) def test_timeseries_trdata(self): Hs = 7.0 Sj = sm.Jonswap(Hm0=Hs) S = Sj.tospecdata() # Make spectrum object from numerical values S.tr = tm.TrOchi(mean=0, skew=0.16, kurt=0, sigma=Hs/4, ysigma=Hs/4) xs = S.sim(ns=2**20, iseed=10) ts = wo.mat2timeseries(xs) g0, _gemp = ts.trdata(monitor=False) # Not Monitor the development # Equal weight on all points g1, _gemp = ts.trdata(method='mnonlinear', gvar=0.5) # Less weight on the ends g2, _gemp = ts.trdata(method='nonlinear', gvar=[3.5, 0.5, 3.5]) self.assert_(1.2 < S.tr.dist2gauss() < 1.6) self.assert_(1.65 < g0.dist2gauss() < 2.05) self.assert_(0.54 < g1.dist2gauss() < 0.95) self.assert_(1.5 < g2.dist2gauss() < 1.9) def test_cycles_and_levelcrossings(self): x = wafo.data.sea() ts = wo.mat2timeseries(x) tp = ts.turning_points() assert_array_almost_equal(tp.data[:10], [-1.200495, 0.839505, -0.090495, -0.020495, -0.090495, -0.040495, -0.160495, 0.259505, -0.430495, -0.080495] ) mm = tp.cycle_pairs() assert_array_almost_equal(mm.data[:10], [0.839505, -0.020495, -0.040495, 0.259505, -0.080495, -0.080495, 0.349505, 0.859505, 0.009505, 0.319505]) lc = mm.level_crossings() assert_array_almost_equal(lc.data[:10], [0., 1., 2., 2., 3., 4., 5., 6., 7., 9.]) def test_levelcrossings_extrapolate(self): x = wafo.data.sea() ts = wo.mat2timeseries(x) tp = ts.turning_points() mm = tp.cycle_pairs() lc = mm.level_crossings() s = x[:, 1].std() lc_gpd = lc.extrapolate(-2 * s, 2 * s, dist='rayleigh') assert_array_almost_equal(lc_gpd.data[:10], [1.789254e-37, 2.610988e-37, 3.807130e-37, 5.546901e-37, 8.075384e-37, 1.174724e-36, 1.707531e-36, 2.480054e-36, 3.599263e-36, 5.219466e-36]) if __name__ == "__main__": # import sys;sys.argv = ['', 'Test.testName'] unittest.main()