def test_perpendicular_fit(self): ds = gtsdf.Dataset(tfp + "binfit.hdf5") x, y = ds('Wsp_metmast'), ds('Power') if 0: import matplotlib.pyplot as plt fx, fit = perpendicular_bin_fit(x, y, 30, plt=plt) plt.show() else: fx, fit = perpendicular_bin_fit(x, y, 30) self.assertEqual(len(fx), 30)
def test_gtsdf_dataset(self): ds = gtsdf.Dataset(tfp + 'test.hdf5') self.assertEqual(ds.data.shape, (2440, 49)) self.assertEqual(ds('Time')[1], 0.05) self.assertEqual(ds.Time[1], 0.05) self.assertRaisesRegex(AttributeError, "'Dataset' object has no attribute 'Time1'", lambda: ds.Time1) self.assertEqual(ds(2)[1], 12.04148006439209) n = ds.info['attribute_names'][2] self.assertEqual(n, "WSP gl. coo.,Vy") self.assertEqual(ds(n)[1], 12.04148006439209)
def test_cycle_trigger(self): ds = gtsdf.Dataset(tfp + 'azi.hdf5') azi, rpm, time = [ds(x)[8403:8803] for x in ['azi', 'Rot_cor', 'Time']] trigger = revolution_trigger_old(azi) np.testing.assert_array_equal(trigger, [17, 128, 241, 354]) azi[64] = 358 trigger = revolution_trigger_old(azi, (ds('Rot_cor'), np.diff(time).mean())) # import matplotlib.pyplot as plt # t = np.arange(len(azi)) # plt.plot(t, azi) # for i1,i2 in trigger: # plt.plot(t[i1:i2],azi[i1:i2],'.--') # plt.show() np.testing.assert_array_equal(trigger, [(128, 241), (241, 354)])
def testRotorPositionFix(self): ds = gtsdf.Dataset(tfp + 'azi.hdf5') sample_frq = 25 #import matplotlib.pyplot as plt #print (find_fix_dt(ds.azi, sample_frq, ds.Rot_cor, plt)) rp_fit = fix_rotor_position(ds.azi, sample_frq, ds.Rot_cor) rpm_pos = differentiation(rp_fit) % 180 / 360 * sample_frq * 60 err_sum = np.sum((rpm_pos - ds.Rot_cor)**2) self.assertLess(err_sum, 40) if 0: import matplotlib.pyplot as plt t = ds.Time - ds.Time[0] plt.plot(t, differentiation(ds.azi) % 180 / 360 * sample_frq * 60, label='fit') plt.plot(t, ds.Rot_cor) plt.plot(t, differentiation(rp_fit) % 180 / 360 * sample_frq * 60, label='fit') plt.ylim(10, 16) plt.show()
def test_find_fix_dt(self): ds = gtsdf.Dataset(tfp + 'azi.hdf5') sample_frq = 25 self.assertEqual(find_fix_dt(ds.azi, sample_frq, ds.Rot_cor), 4)
if 'vv' in spectra: plt.semilogx(mf, mf * mvv * 10**0 / u_ref**2, 'g' + style) if 'ww' in spectra: plt.semilogx(mf, mf * mww * 10**0 / u_ref**2, 'b' + style) if 'uw' in spectra: plt.semilogx(mf, mf * muw * 10**0 / u_ref**2, 'm' + style) if __name__ == "__main__": from wetb import gtsdf from wetb.wind.utils import wsp_dir2uv from wetb import wind import matplotlib.pyplot as plt """Example of fitting Mann parameters to a time series""" ds = gtsdf.Dataset( os.path.dirname(wind.__file__) + "/tests/test_files/WspDataset.hdf5" ) # 'unit_test/test_files/wspdataset.hdf5') f = 35 u, v = wsp_dir2uv(ds.Vhub_85m, ds.Dir_hub_) u_ref = np.mean(u) u -= u_ref sf = f / u_ref ae, L, G = fit_mann_model_spectra(*spectra(sf, u, v), plt=None) print(ae, L, G) print(u.shape) print(ds.Time[-1]) plt.plot(u) plt.plot(detrend_wsp(u)[0]) plt.show()