diff --git a/gwhat/projet/manager_data.py b/gwhat/projet/manager_data.py
index 4fc60e690..3f05b90b5 100644
--- a/gwhat/projet/manager_data.py
+++ b/gwhat/projet/manager_data.py
@@ -198,6 +198,7 @@ def wldataset_count(self):
return len(self.projet.wldsets)
def import_wldataset(self):
+ """Open a dialog window to import a water level dataset from a file."""
if self.projet is None:
msg = ('Please first select a valid WHAT project or '
'create a new one.')
@@ -281,6 +282,7 @@ def wxdataset_count(self):
return len(self.projet.wxdsets)
def import_wxdataset(self):
+ """Open a dialog window to import a weather dataset from a file."""
if self.projet is None:
msg = ("Please first select a valid project or create a new one.")
btn = QMessageBox.Ok
@@ -443,9 +445,9 @@ def __initUI__(self):
"on how to format your input data files correctly."
""
) % (self._datatype.capitalize(), url_i)
- self._msg = QLabel(msg)
- self._msg.setVisible(False)
- self._msg.setOpenExternalLinks(True)
+ self._error_lbl = QLabel(msg)
+ self._error_lbl.setVisible(False)
+ self._error_lbl.setOpenExternalLinks(True)
# Select Dataset Layout
@@ -458,10 +460,10 @@ def __initUI__(self):
grp_dset.addWidget(self.directory, row, 1)
grp_dset.addWidget(self.btn_browse, row, 3)
row += 1
- grp_dset.addWidget(self._msg, row, 1, 1, 3)
+ grp_dset.addWidget(self._error_lbl, row, 1, 1, 3)
grp_dset.setContentsMargins(0, 0, 0, 15)
- grp_dset.setColumnStretch(2, 100)
+ grp_dset.setColumnStretch(1, 100)
grp_dset.setVerticalSpacing(15)
# ----- Station Info Groupbox
@@ -539,6 +541,8 @@ def __initUI__(self):
layout.addLayout(toolbar, 2, 0)
layout.setRowMinimumHeight(3, 15)
+ layout.setRowStretch(10, 100)
+ layout.setColumnStretch(0, 100)
def _add_info_field(self, label, widget):
"""Add a new field to the Station Info group box."""
@@ -624,9 +628,8 @@ def load_dataset(self, filename):
# Load the Data :
QApplication.setOverrideCursor(Qt.WaitCursor)
- msg = 'Loading %s data...' % self._datatype
- print(msg)
- self.ConsoleSignal.emit('%s' % msg)
+ self.ConsoleSignal.emit(
+ "Loading %s data..." % self._datatype)
for i in range(5):
QCoreApplication.processEvents()
@@ -678,7 +681,7 @@ def update_gui(self, filename=None):
dsetname = dsetname.replace(char, '_')
self._dset_name.setText(dsetname)
- self._msg.setVisible(
+ self._error_lbl.setVisible(
self._dataset is None and self.directory.text() != '')
self.btn_ok.setEnabled(self._dataset is not None)
self.grp_info.setEnabled(self._dataset is not None)
@@ -742,11 +745,6 @@ def close(self):
self.directory.clear()
self.update_gui()
- def show(self):
- """Qt method override."""
- super(NewDatasetDialog, self).show()
- self.setFixedSize(self.size())
-
class ExportWeatherButton(QToolButtonBase):
"""
diff --git a/gwhat/projet/reader_waterlvl.py b/gwhat/projet/reader_waterlvl.py
index 7e4776953..3ca0a5ac1 100644
--- a/gwhat/projet/reader_waterlvl.py
+++ b/gwhat/projet/reader_waterlvl.py
@@ -21,15 +21,32 @@
# ---- Read and Load Water Level Datafiles
-def read_water_level_datafile(filename):
- """Load a water level dataset from a csv or Excel file."""
+def open_water_level_datafile(filename):
+ """Open a water level data file and return the data."""
root, ext = os.path.splitext(filename)
if ext not in FILE_EXTS:
- print("ERROR: supported file format are: ", FILE_EXTS)
- return None
+ raise ValueError("Supported file format are: ", FILE_EXTS)
else:
print('Loading waterlvl time-series from %s file...' % ext[1:])
+ if ext == '.csv':
+ with open(filename, 'r', encoding='utf8') as f:
+ data = list(csv.reader(f, delimiter=','))
+ elif ext in ['.xls', '.xlsx']:
+ with xlrd.open_workbook(filename, on_demand=True) as wb:
+ sheet = wb.sheet_by_index(0)
+ data = [sheet.row_values(rowx, start_colx=0, end_colx=None) for
+ rowx in range(sheet.nrows)]
+
+ return data
+
+
+def read_water_level_datafile(filename):
+ """Load a water level dataset from a csv or Excel file."""
+ data = open_water_level_datafile(filename)
+ if data is None:
+ return None
+
df = {'filename': filename,
'Well': '',
'Well ID': '',
@@ -43,20 +60,12 @@ def read_water_level_datafile(filename):
'BP': np.array([]),
'ET': np.array([])}
- if ext == '.csv':
- with open(filename, 'r', encoding='utf8') as f:
- data = list(csv.reader(f, delimiter=','))
- elif ext in ['.xls', '.xlsx']:
- with xlrd.open_workbook(filename, on_demand=True) as wb:
- sheet = wb.sheet_by_index(0)
- data = [sheet.row_values(rowx, start_colx=0, end_colx=None) for
- rowx in range(sheet.nrows)]
-
# ---- Read the Header
for row, line in enumerate(data):
if len(line) == 0:
continue
+
try:
label = line[0].lower().replace(":", "").replace("=", "").strip()
except AttributeError:
@@ -110,12 +119,17 @@ def read_water_level_datafile(filename):
df['Time'] = data[:, 0].astype(float)
df['WL'] = data[:, 1].astype(float)
except ValueError:
- print('ERROR: The water level datafile is not formatted correctly')
+ print('The water level datafile is not formatted correctly')
return None
else:
print('Waterlvl time-series for well %s loaded successfully.' %
df['Well'])
+ # The data are not monotically increasing in time.
+ if np.min(np.diff(df['Time'])) <= 0:
+ print("The data are not monotically increasing in time.")
+ return None
+
# Read the barometric data
try:
@@ -139,9 +153,6 @@ def read_water_level_datafile(filename):
return df
-# =============================================================================
-
-
def make_waterlvl_continuous(t, wl):
# This method produce a continuous daily water level time series.
# Missing data are filled with nan values.