def residual_square(p, data): a = P4Rm() P4Rm.ParamDict['_fp_min'] = p y_cal = f_Refl(a.AllDataDict['geometry']) y_cal = y_cal/y_cal.max() + data['background'] temp = ((log10(a.ParamDict['Iobs']) - log10(y_cal))**2).sum() return temp / len(y_cal)
def residual_square(p, data): a = P4Rm() P4Rm.ParamDict['_fp_min'] = p y_cal = f_Refl(a.AllDataDict['geometry']) y_cal = y_cal / y_cal.max() + data['background'] temp = ((log10(a.ParamDict['Iobs']) - log10(y_cal))**2).sum() return temp / len(y_cal)
def on_fit_ending(self, case): a = P4Rm() P4Rm.ParamDict['I_i'] = a.ParamDict['I_fit'] y_cal = f_Refl(a.AllDataDict['geometry']) y_cal = y_cal / y_cal.max() + a.AllDataDict['background'] temp = ((log10(a.ParamDict['Iobs']) - log10(y_cal)) ** 2).sum() P4Rm.residual_error = temp / len(y_cal) if a.fit_type == 0: t_ = a.par_fit[:int(a.AllDataDict['strain_basis_func'])] P4Rm.ParamDict['sp'] = t_ t_ = a.par_fit[-1 * int(a.AllDataDict['dw_basis_func']):] P4Rm.ParamDict['dwp'] = t_ else: if a.lmfit_install: self.on_read_data_from_lmfit() else: t_ = a.par_fit[:int(a.AllDataDict['strain_basis_func'])] P4Rm.ParamDict['sp'] = t_ t_ = a.par_fit[-1 * int(a.AllDataDict['dw_basis_func']):] P4Rm.ParamDict['dwp'] = t_
def on_fit_ending(self, case): a = P4Rm() P4Rm.ParamDict["I_i"] = a.ParamDict["I_fit"] y_cal = f_Refl(a.AllDataDict["geometry"]) y_cal = y_cal / y_cal.max() + a.AllDataDict["background"] temp = ((log10(a.ParamDict["Iobs"]) - log10(y_cal)) ** 2).sum() P4Rm.residual_error = temp / len(y_cal) if a.fit_type == 0: t_ = a.par_fit[: int(a.AllDataDict["strain_basis_func"])] P4Rm.ParamDict["sp"] = t_ t_ = a.par_fit[-1 * int(a.AllDataDict["dw_basis_func"]) :] P4Rm.ParamDict["dwp"] = t_ else: if a.lmfit_install: self.on_read_data_from_lmfit() else: t_ = a.par_fit[: int(a.AllDataDict["strain_basis_func"])] P4Rm.ParamDict["sp"] = t_ t_ = a.par_fit[-1 * int(a.AllDataDict["dw_basis_func"]) :] P4Rm.ParamDict["dwp"] = t_
def on_calcul_parameters(self): a = P4Rm() name = a.PathDict['Compound_name'] name_s = a.PathDict['substrate_name'] self.on_test_substrate() spline_strain = a.spline_strain spline_DW = a.spline_DW temp = [spline_strain, spline_DW] P4Rm.splinenumber = temp if a.AllDataDict['model'] != 2: nb_slice, dw_func = self.OnChangeBasisFunction( a.AllDataDict['strain_basis_func'], a.AllDataDict['dw_basis_func'], spline_strain, spline_DW, a.AllDataDict['number_slices']) a.AllDataDict['dw_basis_func'] = dw_func a.AllDataDict['number_slices'] = nb_slice if name != []: self.on_make_param_func() P4Rm.ParamDict['par'] = np.concatenate((a.ParamDict['sp'], a.ParamDict['dwp']), axis=0) x_ = a.ParamDict['th'] param = a.ParamDict['param_func_profile'] P4Rm.ParamDict['resol'] = a.ParamDict['func_profile'](x_, param) P4Rm.ParamDict['t_l'] = (a.AllDataDict['damaged_depth'] / a.AllDataDict['number_slices']) P4Rm.ParamDict['z'] = (arange(a.AllDataDict['number_slices']+1) * a.ParamDict['t_l']) # ============================================================================= # Material Data # ============================================================================= P4Rm.ParamDict['d'], P4Rm.ParamDict['Vol'] = f_dhkl_V( a.AllDataDict['h'], a.AllDataDict['k'], a.AllDataDict['l'], a.AllDataDict['a'], a.AllDataDict['b'], a.AllDataDict['c'], a.AllDataDict['alpha'], a.AllDataDict['beta'], a.AllDataDict['gamma']) temp_1 = (a.ConstDict['re'] * a.AllDataDict['wavelength'] * a.AllDataDict['wavelength']) P4Rm.ParamDict['G'] = temp_1 / (np.pi * a.ParamDict['Vol']) temp_2 = arcsin(a.AllDataDict['wavelength'] / (2*a.ParamDict['d'])) P4Rm.ParamDict['thB_S'] = temp_2 temp_3 = a.ConstDict['phi'] P4Rm.ParamDict['g0'] = sin(a.ParamDict['thB_S'] - temp_3) P4Rm.ParamDict['gH'] = -sin(a.ParamDict['thB_S'] + temp_3) P4Rm.ParamDict['b_S'] = a.ParamDict['g0'] / a.ParamDict['gH'] temp_4 = f_FH(a.AllDataDict['h'], a.AllDataDict['k'], a.AllDataDict['l'], a.AllDataDict['wavelength'], a.ParamDict['thB_S'], a.ParamDict['z'], name) P4Rm.ParamDict['FH'] = temp_4[0] P4Rm.ParamDict['FmH'] = temp_4[1] P4Rm.ParamDict['F0'] = temp_4[2] # ============================================================================= # Substrate Data # ============================================================================= P4Rm.ParamDict['d_s'], P4Rm.ParamDict['Vol_s'] = f_dhkl_V( a.AllDataDict['h_s'], a.AllDataDict['k_s'], a.AllDataDict['l_s'], a.AllDataDict['a_s'], a.AllDataDict['b_s'], a.AllDataDict['c_s'], a.AllDataDict['alpha_s'], a.AllDataDict['beta_s'], a.AllDataDict['gamma_s']) temp_1 = (a.ConstDict['re'] * a.AllDataDict['wavelength'] * a.AllDataDict['wavelength']) P4Rm.ParamDict['G_s'] = temp_1 / (np.pi * a.ParamDict['Vol_s']) temp_2 = arcsin(a.AllDataDict['wavelength'] / (2*a.ParamDict['d_s'])) P4Rm.ParamDict['thB_S_s'] = temp_2 temp_3 = a.ConstDict['phi_s'] P4Rm.ParamDict['g0_s'] = sin(a.ParamDict['thB_S_s'] - temp_3) P4Rm.ParamDict['gH_s'] = -sin(a.ParamDict['thB_S_s'] + temp_3) P4Rm.ParamDict['b_S_s'] = a.ParamDict['g0_s'] / a.ParamDict['gH_s'] temp_4 = f_FH(a.AllDataDict['h_s'], a.AllDataDict['k_s'], a.AllDataDict['l_s'], a.AllDataDict['wavelength'], a.ParamDict['thB_S_s'], a.ParamDict['z'], name_s) P4Rm.ParamDict['FH_s'] = temp_4[0] P4Rm.ParamDict['FmH_s'] = temp_4[1] P4Rm.ParamDict['F0_s'] = temp_4[2] # ============================================================================= P4Rm.ParamDict['Ical'] = f_Refl(a.AllDataDict['geometry']) P4Rm.ParamDict['I_i'] = (a.ParamDict['Ical'] / a.ParamDict['Ical'].max() + a.AllDataDict['background']) P4Rm.ParamDict['depth'] = (a.AllDataDict['damaged_depth'] - a.ParamDict['z']) P4Rm.ParamDict['DW_i'] = f_DW( a.ParamDict['z'], a.ParamDict['dwp'], a.AllDataDict['damaged_depth'], spline_DW) P4Rm.ParamDict['strain_i'] = f_strain( a.ParamDict['z'], a.ParamDict['sp'], a.AllDataDict['damaged_depth'], spline_strain) t = a.AllDataDict['damaged_depth'] if a.AllDataDict['damaged_depth'] > 0: self.on_shifted_sp_curves(t) self.on_shifted_dwp_curves(t) self.draw_curves() else: msg_ = "check if the structure file really exists" logger.log(logging.WARNING, msg_)