diff --git a/gwhat/brf_mod/kgs_gui.py b/gwhat/brf_mod/kgs_gui.py index 76322857e..7a2eb2f9a 100644 --- a/gwhat/brf_mod/kgs_gui.py +++ b/gwhat/brf_mod/kgs_gui.py @@ -406,7 +406,7 @@ class BRFViewer(QWidget): def __init__(self, wldset=None, parent=None): super(BRFViewer, self).__init__(parent) - self.__save_ddir = osp.dirname(__rootdir__) + self.__save_ddir = None self.setWindowTitle('BRF Results Viewer') self.setWindowIcon(icons.get_icon('master')) @@ -524,8 +524,20 @@ def __initGUI__(self): ml.setColumnStretch(1, 100) - # ---- Toolbar Handlers + @property + def savedir(self): + """Return a path where figures and files are saved by default.""" + if self.__save_ddir is None or not osp.exists(self.__save_ddir): + try: + savedir = self.wldset.dirname + except AttributeError: + savedir = osp.dirname(__rootdir__) + finally: + return savedir + else: + return self.__save_ddir + # ---- Toolbar Handlers def toggle_graphpannel(self): if self.graph_opt_panel.isVisible() is True: # Hide the panel. @@ -601,15 +613,15 @@ def select_savefig_path(self): """ Opens a dialog to select a file path where to save the brf figure. """ - ddir = osp.join(self.__save_ddir, - 'brf_%s' % self.wldset['Well']) + ddir = osp.join(self.savedir, 'brf_%s' % self.wldset['Well']) dialog = QFileDialog() fname, ftype = dialog.getSaveFileName( self, "Save Figure", ddir, '*.pdf;;*.svg') ftype = ftype.replace('*', '') if fname: - self.__save_ddir = osp.dirname(fname) + if not osp.samefile(osp.dirname(ddir), osp.dirname(fname)): + self.__save_ddir = osp.dirname(fname) if not fname.endswith(ftype): fname = fname + ftype self.save_brf_fig(fname) @@ -632,14 +644,15 @@ def select_export_brfdata_filepath(self): fname = 'brf_' + self.wldset['Well'] if self.wldset['Well ID']: fname += '_%s' % self.wldset['Well ID'] - ddir = osp.join(self.__save_ddir, fname) + ddir = osp.join(self.savedir, fname) dialog = QFileDialog() fname, ftype = dialog.getSaveFileName( self, "Export Data", ddir, "*.xlsx;;*.xls;;*.csv") ftype = ftype.replace('*', '') if fname: - self.__save_ddir = osp.dirname(fname) + if not osp.samefile(osp.dirname(ddir), osp.dirname(fname)): + self.__save_ddir = osp.dirname(fname) if not fname.endswith(ftype): fname = fname + ftype self.export_brf_data(fname) @@ -651,10 +664,8 @@ def export_brf_data(self, fname): # ---- Others def set_wldset(self, wldset): self.wldset = wldset - if wldset is None: - self.setEnabled(False) - else: - self.setEnabled(True) + self.setEnabled(wldset is not None) + if wldset is not None: self.update_brfnavigate_state() def plot_brf(self): @@ -666,8 +677,6 @@ def plot_brf(self): databrf = self.wldset.get_brf(name) well = self.wldset['Well'] - if self.graph_opt_panel.show_ebar is False: - err = [] msize = self.graph_opt_panel.markersize draw_line = self.graph_opt_panel.draw_line diff --git a/gwhat/projet/reader_projet.py b/gwhat/projet/reader_projet.py index 6e1c8efae..0c8e9e3af 100644 --- a/gwhat/projet/reader_projet.py +++ b/gwhat/projet/reader_projet.py @@ -448,6 +448,10 @@ def __getitem__(self, key): else: return self.dset[key][...] + @property + def dirname(self): + return os.path.dirname(self.dset.file.filename) + @property def name(self): return osp.basename(self.dset.name) @@ -677,7 +681,8 @@ def get_brf(self, name): # Cast the data into a pandas dataframe. keys = ['Lag', 'A', 'sdA', 'SumA', 'sdSumA', 'B', 'sdB', 'SumB', 'sdSumB'] - dataf = pd.DataFrame({key: grp[key][...] for key in keys}) + dataf = pd.DataFrame({key: grp[key][...] for key in keys if + key in grp.keys()}) dataf.date_start = datetime.datetime.strptime( grp.attrs['date start'], "%Y-%m-%dT%H:%M:%S") dataf.date_end = datetime.datetime.strptime( @@ -729,6 +734,13 @@ def export_brf_to_csv(self, filename, index): databrf = self.get_brf(self.get_brfname_at(index)) databrf.insert(0, 'LagNo', databrf.index.astype(int)) + brf_date_start = databrf.date_start.strftime(format='%d/%m/%y %H:%M') + brf_date_end = databrf.date_end.strftime(format='%d/%m/%y %H:%M') + + nbr_bp_lags = len(databrf['SumA'].dropna(inplace=False)) - 1 + nbr_et_lags = ('N/A' if 'SumB' not in databrf.columns else + len(databrf['SumB'].dropna(inplace=False)) - 1) + fcontent = [ ['Well Name :', self['Well']], ['Well ID :', self['Well ID']], @@ -738,15 +750,13 @@ def export_brf_to_csv(self, filename, index): ['Municipality :', self['Municipality']], ['Province :', self['Province']], [], - ['BRF Start Time :', - databrf.date_start.strftime(format='%d/%m/%y %H:%M')], - ['BRF End Time :', - databrf.date_end.strftime(format='%d/%m/%y %H:%M')], - ['Number of BP Lags :', len(databrf['A']) - 1], - ['Number of ET Lags :', - len(databrf['B'].dropna(inplace=False)) - 1], + ['BRF Start Time :', brf_date_start], + ['BRF End Time :', brf_date_end], + ['Number of BP Lags :', nbr_bp_lags], + ['Number of ET Lags :', nbr_et_lags], ['Developed with detrending :', databrf.detrending], - []] + [] + ] fcontent.append(list(databrf.columns)) fcontent.extend(nan_as_text_tolist(databrf.values)) @@ -941,15 +951,16 @@ def load_dict_from_h5grp(h5grp): FNAME = ("C:\\Users\\User\\gwhat\\Projects\\Example\\Example.gwt") PROJET = ProjetReader(FNAME) - WLDSET = PROJET.get_wldset('3040002_15min') - print(WLDSET.glue_idnums()) + wldset = PROJET.get_wldset('3040002_15min') + print(wldset.glue_idnums()) + print(wldset.dirname) - data = WLDSET.data + data = wldset.data - WLDSET.brf_count() + wldset.brf_count() filename = 'C:/Users/User/Desktop/brf_test.csv' - WLDSET.export_brf_to_csv(filename, 0) + wldset.export_brf_to_csv(filename, 0) # glue_count = GLUEDF['count'] # dly_glue = GLUEDF['daily budget']