示例#1
0
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)
示例#2
0
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)
示例#3
0
    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_
示例#4
0
    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_
示例#5
0
    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_)
示例#6
0
    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_)