Exemple #1
0
    def test_fit_gauss_ramsey(self):
        y_data = np.array([0.6019, 0.5242, 0.3619, 0.1888, 0.1969, 0.3461, 0.5276, 0.5361,
                           0.4261, 0.28, 0.2323, 0.2992, 0.4373, 0.4803, 0.4438, 0.3392,
                           0.3061, 0.3161, 0.3976, 0.4246, 0.398, 0.3757, 0.3615, 0.3723,
                           0.3803, 0.3873, 0.3873, 0.3561, 0.37, 0.3819, 0.3834, 0.3838,
                           0.37, 0.383, 0.3573, 0.3869, 0.3838, 0.3792, 0.3757, 0.3815])
        x_data = 1e-6 * np.array([i * 1.6 / 40 for i in range(40)])

        par_fit_test, _ = fit_gauss_ramsey(x_data, y_data)

        self.assertTrue(np.abs(np.abs(par_fit_test[0]) - 0.22) < 0.1)
        self.assertTrue(np.abs(par_fit_test[-2] - (-1.275)) < 0.1)
        self.assertTrue(np.abs(par_fit_test[-1] - 0.376) < 0.1)

        x_data = np.array([0.00000000e+00, 4.73333330e-07, 9.46666660e-07, 1.41999999e-06, 1.89333332e-06,
                           2.36666665e-06, 2.83333338e-06, 3.30666671e-06, 3.78000004e-06, 4.25333337e-06,
                           4.72666670e-06, 5.20000003e-06, 5.67333336e-06, 6.14666669e-06, 6.62000002e-06,
                           7.09333335e-06, 7.56666668e-06, 8.03333296e-06, 8.50666675e-06, 8.97999962e-06,
                           9.45333340e-06, 9.92666628e-06, 1.04000001e-05])
        y_data = np.array([0.59500003, 0.41499999, 0.12, 0.13166666, 0.35833332, 0.60500002, 0.48166665, 0.36166668,
                           0.28166667, 0.26333332, 0.28999999, 0.32666665, 0.36666667, 0.37666667, 0.38499999,
                           0.38833332, 0.35166666, 0.31666666, 0.34, 0.30000001, 0.31999999, 0.33000001, 0.31666666])

        par_fit_test, results = fit_gauss_ramsey(x_data, y_data)

        self.assertAlmostEqual(par_fit_test[0], 0.303, places=1)
        self.assertAlmostEqual(par_fit_test[1] * 1e6, 3.55, places=1)
        self.assertAlmostEqual(par_fit_test[2] * 1e-6, 0.36, places=1)
Exemple #2
0
    def test_fit_gauss_ramsey_weights(self, fig=123):
        x_data = np.hstack((np.linspace(0, 3 * np.pi, 20), np.linspace(3 * np.pi, 4 * np.pi, 100)))
        y_data = np.sin(x_data)
        y_data[21:] = 0

        fitted_parameters_unweighted, _ = fit_gauss_ramsey(x_data, y_data)
        fitted_parameters, _ = fit_gauss_ramsey(x_data, y_data, weight_power=10)
        self.assertAlmostEqual(fitted_parameters[0], 1, places=2)
        self.assertTrue(fitted_parameters[1] > 200)
        self.assertAlmostEqual(fitted_parameters[2], 1 / (2 * np.pi), places=1)
        self.assertAlmostEqual(fitted_parameters[3], 0, places=5)
        self.assertAlmostEqual(fitted_parameters[4], 0, places=4)
        if fig is not None:
            plt.figure(fig)
            plt.clf()
            plt.plot(x_data, y_data, '.')
            plt.plot(x_data, gauss_ramsey(x_data, fitted_parameters_unweighted), 'b')
            plt.plot(x_data, gauss_ramsey(x_data, fitted_parameters), 'm')
            plt.close(fig)
Exemple #3
0
    def test_fit_gauss_ramsey(self, fig=100):
        y_data = np.array([0.6019, 0.5242, 0.3619, 0.1888, 0.1969, 0.3461, 0.5276, 0.5361,
                           0.4261, 0.28, 0.2323, 0.2992, 0.4373, 0.4803, 0.4438, 0.3392,
                           0.3061, 0.3161, 0.3976, 0.4246, 0.398, 0.3757, 0.3615, 0.3723,
                           0.3803, 0.3873, 0.3873, 0.3561, 0.37, 0.3819, 0.3834, 0.3838,
                           0.37, 0.383, 0.3573, 0.3869, 0.3838, 0.3792, 0.3757, 0.3815])
        x_data = np.array([i * 1.6 / 40 for i in range(40)])

        par_fit_test, _ = fit_gauss_ramsey(x_data * 1e-6, y_data)

        plot_gauss_ramsey_fit(x_data*1e-6, y_data, par_fit_test, fig=fig)