Пример #1
0
    def energy_grid(self, array, e0, edge_start, edge_end, preedge_spacing, xanes, exafsk):
        preedge = np.arange(np.min(array), edge_start, preedge_spacing)
        edge = np.arange(edge_start, edge_end, xanes)

        eenergy = xray.k2e(xray.e2k(edge_end, e0), e0)
        postedge = np.array([])

        while(eenergy < np.max(array)):
            kenergy = xray.e2k(eenergy, e0)
            kenergy += exafsk
            eenergy = xray.k2e(kenergy, e0)
            postedge = np.append(postedge, eenergy)

        return np.append(np.append(preedge, edge), postedge)
Пример #2
0
    def get_k_data(self,
                   e0,
                   edge_end,
                   exafsk,
                   y_data,
                   interp_dict,
                   en_orig,
                   data_orig,
                   pow=1,
                   energy_string='energy'):
        df = pd.DataFrame({k: v[:, 1]
                           for k, v in interp_dict.items()
                           }).sort_values(energy_string)
        energy_array = df[energy_string].values
        e_interval = self.get_k_interval(energy_array, e0, e0 + edge_end,
                                         exafsk)
        k_interval = xray.e2k(e_interval, e0)  #e0 + edge_end)

        condition = en_orig >= e0 + edge_end
        en_orig = np.extract(condition, en_orig)
        data_orig = np.extract(condition, data_orig)
        polyfit = np.polyfit(en_orig, data_orig, 2)  #2 is ok?
        p = np.poly1d(polyfit)
        calibration = p(e_interval)

        y_data = y_data[-len(k_interval):] - calibration
        data = y_data[-len(k_interval):] * (k_interval**pow)
        return np.array([k_interval, data])
Пример #3
0
    def get_k_data(self,
                   e0,
                   edge_end,
                   exafsk,
                   df,
                   en_orig,
                   data_orig,
                   pow=1,
                   energy_string='energy'):
        y_data = data_orig.copy()
        energy_array = df[energy_string].values
        e_interval = self.get_k_interval(energy_array, e0, e0 + edge_end,
                                         exafsk)
        k_interval = xray.e2k(e_interval, e0)  #e0 + edge_end)

        condition = en_orig >= e0 + edge_end
        en_orig = np.extract(condition, en_orig)
        data_orig = np.extract(condition, data_orig)
        try:
            polyfit = np.polyfit(en_orig, data_orig, 2)  #2 is ok?
            p = np.poly1d(polyfit)
            calibration = p(e_interval)

            y_data = y_data[-len(k_interval):] - calibration
            data = y_data[-len(k_interval):] * (k_interval**pow)
            return np.array([k_interval, data])
        except Exception as exc:
            print(exc)
            return np.array([[], []])
Пример #4
0
    def mouse_press_event(self, event):

        e_vs_k_discriminate_list = [
            'pushButton_spline_lo_set', 'pushButton_spline_hi_set',
            'pushButton_k_ft_lo_set', 'pushButton_k_ft_hi_set'
        ]

        lineEdit = getattr(
            self, self.pushButton_set_to_lineEdit_dict[self.sender_object])
        e0 = float(self.lineEdit_e0.text())
        if self.sender_object == 'pushButton_e0_set':
            new_value = event.xdata

        elif self.sender_object == 'pushButton_truncate_at_set':
            if self.current_plot_in == 'e':
                new_value = event.xdata
            elif self.current_plot_in == 'k':
                new_value = k2e(event.xdata, e0)

        elif self.sender_object in e_vs_k_discriminate_list:
            if self.current_plot_in == 'k':
                new_value = event.xdata
            elif self.current_plot_in == 'e':
                new_value = e2k(event.xdata, e0)
        else:
            new_value = event.xdata - e0

        lineEdit.setText('{:.1f}'.format(new_value))
        sender_object = lineEdit

        print(sender_object)
        selection = self.listView_xasproject.selectedIndexes()
        if selection != []:
            index = selection[0].row()
            ds = self.xasproject[index]
            try:
                float(sender_object.text())
                setattr(
                    ds, self.lineEdit_to_ds_parameter_dict[
                        sender_object.objectName()],
                    float(sender_object.text()))
            except:
                print('what' 's going wrong')

        self._disconnect_cid()
Пример #5
0
    def get_k_data(self,
                   e0,
                   edge_end,
                   exafsk,
                   y_data,
                   energy_array,
                   en_orig,
                   data_orig,
                   pow=1):
        e_interval = self.get_k_interval(energy_array, e0, e0 + edge_end,
                                         exafsk)
        k_interval = xray.e2k(e_interval, e0)  #e0 + edge_end)

        condition = en_orig >= e0 + edge_end
        en_orig = np.extract(condition, en_orig)
        data_orig = np.extract(condition, data_orig)
        polyfit = np.polyfit(en_orig, data_orig, 2)  #2 is ok?
        p = np.poly1d(polyfit)
        calibration = p(e_interval)

        y_data = y_data[-len(k_interval):] - calibration
        data = y_data[-len(k_interval):] * (k_interval**pow)
        return np.array([k_interval, data])