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
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
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)
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,