Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: Ensure backward compatibility with previously saved BRF results #288

Merged
merged 7 commits into from
Apr 17, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 22 additions & 13 deletions gwhat/brf_mod/kgs_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'))
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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):
Expand All @@ -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

Expand Down
39 changes: 25 additions & 14 deletions gwhat/projet/reader_projet.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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']],
Expand All @@ -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))

Expand Down Expand Up @@ -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']

Expand Down