Esempio n. 1
0
    def add_files_to_xas_project(self):
        if self.listBinnedDataNumerator.currentRow() != -1 and self.listBinnedDataDenominator.currentRow() != -1:
            for item in self.listFiles_bin.selectedItems():
                filepath = str(Path(self.working_folder) / Path(item.text()))
                name = Path(filepath).resolve().stem
                header = self.gen_parser.read_header(filepath)
                uid = header[header.find('UID:')+5:header.find('\n', header.find('UID:'))]

                #FIXME different UID syntax in two files from manual binning and 0mq processing
                try:
                    md = self.db[uid]['start']
                except:
                    print('Metadata not found')
                    md={}

                self.gen_parser.data_manager.loadBinFile(filepath)
                df = self.gen_parser.data_manager.binned_df
                df = df.sort_values('energy')
                num_key = self.listBinnedDataNumerator.currentItem().text()
                den_key = self.listBinnedDataDenominator.currentItem().text()
                mu = df[num_key] / df[den_key]

                if self.checkBox_log_bin.checkState():
                    mu = np.log(mu)
                if self.checkBox_inv_bin.checkState():
                    mu = -mu
                mu=np.array(mu)

                print(type(mu))
                ds = xasproject.XASDataSet(name=name,md=md,energy=df['energy'],mu=mu, filename=filepath,datatype='experiment')
                ds.header = header
                self.xasproject.append(ds)
                self.statusBar().showMessage('Scans added to the project successfully')
        else:
            self.statusBar().showMessage('Select numerator and denominator columns')
Esempio n. 2
0
    def merge_datasets(self):
        selection = self.listView_xasproject.selectedIndexes()
        if selection != []:
            mu = self.xasproject._datasets[selection[0].row()].mu
            energy_master = self.xasproject._datasets[
                selection[0].row()].energy
            mu_array = np.zeros([len(selection), len(mu)])
            energy = self.xasproject._datasets[selection[0].row()].energy
            md = ['merged']
            for indx, obj in enumerate(selection):
                energy = self.xasproject._datasets[
                    selection[indx].row()].energy
                mu = self.xasproject._datasets[selection[indx].row()].mu.mu
                mu = np.interp(energy_master, energy, mu)
                mu_array[indx, :] = mu
                md.append(
                    self.xasproject._datasets[selection[indx].row()].filename)

            mu_merged = np.average(mu_array, axis=0)
            merged = xasproject.XASDataSet(name='merge',
                                           md=md,
                                           energy=energy,
                                           mu=mu_merged,
                                           filename='',
                                           datatype='processed')
            self.xasproject.append(merged)
            self.xasproject.project_changed()