Beispiel #1
0
    def test_binomial_amplitudeN_fit_length_default(self):

        t0 = time.perf_counter()
        full_binom, exponent = binomial_amplitudeN_fit(self.time_array,
                                                       self.binom_dist)[2:]
        t1 = time.perf_counter()

        runtime = t1 - t0

        rms_binom = _binomial_full_to_rms(full_binom, exponent)
        result = (rms_binom - self.sigma_binom) / self.sigma_binom

        return runtime, result
Beispiel #2
0
    def test_binomial_amplitudeN_fit_length_minimize_trust_constr(self):

        fitOpt = FitOptions(fittingRoutine='minimize', method='trust-constr')
        t0 = time.perf_counter()
        full_binom, exponent = binomial_amplitudeN_fit(self.time_array,
                                                       self.binom_dist,
                                                       fitOpt=fitOpt)[2:]
        t1 = time.perf_counter()

        runtime = t1 - t0

        rms_binom = _binomial_full_to_rms(full_binom, exponent)
        result = (rms_binom - self.sigma_binom) / self.sigma_binom

        return runtime, result
Beispiel #3
0
    def __init__(self, iterations=100):
        '''
        We generate three different distributions, Gaussian, Parabolic
        Amplitude, and Binomial that will be used to test the fitting functions
        '''

        self.iterations = iterations

        # Base time array
        self.time_array = np.arange(0, 25e-9, 0.1e-9)

        # Base Gaussian profile
        self.amplitude_gauss = 1.
        self.position_gauss = 13e-9
        self.length_gauss = 2e-9
        self.initial_params_gauss = [
            self.amplitude_gauss, self.position_gauss, self.length_gauss
        ]
        self.gaussian_dist = Gaussian(*self.initial_params_gauss).profile(
            self.time_array)
        self.sigma_gauss = self.length_gauss
        self.fwhm_gauss = Gaussian(*self.initial_params_gauss).FWHM
        self.integral_gauss = Gaussian(*self.initial_params_gauss).integral

        # Base parabolic line profile
        self.amplitude_parabline = 2.5
        self.position_parabline = 9e-9
        self.length_parabline = 7e-9
        self.exponent_parabline = 1.0
        self.initial_params_parabline = [
            self.amplitude_parabline, self.position_parabline,
            self.length_parabline
        ]
        self.parabline_dist = parabolicLine(self.time_array,
                                            *self.initial_params_parabline)
        self.sigma_parabline = _binomial_full_to_rms(self.length_parabline,
                                                     self.exponent_parabline)
        self.fwhm_parabline = _binomial_full_to_fwhm(self.length_parabline,
                                                     self.exponent_parabline)
        self.integral_parabline = _binomial_integral(self.amplitude_parabline,
                                                     self.length_parabline,
                                                     self.exponent_parabline)

        # Base parabolic amplitude profile
        self.amplitude_parabamp = 1.3
        self.position_parabamp = 4e-9
        self.length_parabamp = 5e-9
        self.exponent_parabamp = 1.5
        self.initial_params_parabamp = [
            self.amplitude_parabamp, self.position_parabamp,
            self.length_parabamp
        ]
        self.parabamp_dist = parabolicAmplitude(self.time_array,
                                                *self.initial_params_parabamp)
        self.sigma_parabamp = _binomial_full_to_rms(self.length_parabamp,
                                                    self.exponent_parabamp)
        self.fwhm_parabamp = _binomial_full_to_fwhm(self.length_parabamp,
                                                    self.exponent_parabamp)
        self.integral_parabamp = _binomial_integral(self.amplitude_parabamp,
                                                    self.length_parabamp,
                                                    self.exponent_parabamp)

        # Base binomial profile
        self.amplitude_binom = 0.77
        self.position_binom = 18.3e-9
        self.length_binom = 3.45e-9
        self.exponent_binom = 3.4
        self.initial_params_binom = [
            self.amplitude_binom, self.position_binom, self.length_binom,
            self.exponent_binom
        ]
        self.binom_dist = binomialAmplitudeN(self.time_array,
                                             *self.initial_params_binom)
        self.sigma_binom = _binomial_full_to_rms(self.length_binom,
                                                 self.exponent_binom)
        self.fwhm_binom = _binomial_full_to_fwhm(self.length_binom,
                                                 self.exponent_binom)
        self.integral_binom = _binomial_integral(self.amplitude_binom,
                                                 self.length_binom,
                                                 self.exponent_binom)
Beispiel #4
0
time_array = np.arange(0, 25e-9, 0.1e-9)

amplitude = 1.
position = 13e-9
length = 2e-9
initial_params_gauss = [amplitude, position, length]
gaussian_dist = gaussian(time_array, *initial_params_gauss)
sigma_gauss = length

amplitude = 1.3
position = 4e-9
length = 5e-9
initial_params_parabamp = [amplitude, position, length]
parabamp_dist = parabolicAmplitude(time_array, *initial_params_parabamp)
sigma_parabamp = _binomial_full_to_rms(length, 1.5)

amplitude = 0.77
position = 18.3e-9
length = 3.45e-9
exponent = 3.4
initial_params_binom = [amplitude, position, length, exponent]
binom_dist = binomialAmplitudeN(time_array, *initial_params_binom)
sigma_binom = _binomial_full_to_rms(length, exponent)

# In[3]:

plt.figure('Distributions')
plt.clf()
plt.plot(time_array * 1e9, gaussian_dist, label='Gaussian')
plt.plot(time_array * 1e9,