Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #6
0
    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()