diff --git a/src/Solver/AdisTS.py b/src/Solver/AdisTS.py index 9fa56f9d73b0e2896514d693a26eed115e9f1b13..70f1907deb2adae94c3df0df08463ecc4c482692 100644 --- a/src/Solver/AdisTS.py +++ b/src/Solver/AdisTS.py @@ -634,20 +634,20 @@ class AdisTSlc(AdisTS): data = np.fromfile(f, dtype=np.int32, count=1) # line length (bytes) (start) # end data - print("dta tmp AAA") - print("-----------") - print(data_tmp["AAA-silt"]) + ###print("dta tmp AAA") + ###print("-----------") + ###print(data_tmp["AAA-silt"]) pollutants_keys = list(data_tmp.keys()) timestamps_keys = list(data_tmp[pollutants_keys[0]].keys()) phys_data_names = list(data_tmp[pollutants_keys[0]][timestamps_keys[0]].keys()) - print("pol keys: ", pollutants_keys) - print("t keys: ", timestamps_keys) - print("phys var: ", phys_data_names) + ###print("pol keys: ", pollutants_keys) + ###print("t keys: ", timestamps_keys) + ###print("phys var: ", phys_data_names) #print("set timestamps keys: ", set(timestamps_keys)) #print("isma") - print("iprofiles: ", iprofiles) + ###print("iprofiles: ", iprofiles) pi_tmp = [] reach_tmp = [] @@ -669,20 +669,20 @@ class AdisTSlc(AdisTS): reach.set(p_i, t_data, "pols", pol_view) - print("pi_tmp: ", pi_tmp) - print("pol view: ", pol_view) - print("reach from i: ", reach_tmp) + ###print("pi_tmp: ", pi_tmp) + ###print("pol view: ", pol_view) + ###print("reach from i: ", reach_tmp) #print("pol view: ", pol_view) #print("results: ", results) results.set("timestamps", set(timestamps_keys)) #print("------------------------set timestamps results meta data: ", set(timestamps_keys)) - print("debug profiles for draw:") - print("------------------------") - print(data_tmp["AAA-silt"][0.0]["C"][0]) - print(data_tmp["AAA-silt"][600.0]["C"][0]) - print(data_tmp["AAA-silt"][1205.7208829578194]["C"][0]) - print("========================") + ###print("debug profiles for draw:") + ###print("------------------------") + ###print(data_tmp["AAA-silt"][0.0]["C"][0]) + ###print(data_tmp["AAA-silt"][600.0]["C"][0]) + ###print(data_tmp["AAA-silt"][1205.7208829578194]["C"][0]) + ###print("========================") @timer def results(self, study, repertory, qlog=None, name=None): diff --git a/src/View/Results/PlotHAdisTS.py b/src/View/Results/PlotHAdisTS.py index e62e2b8424ebab1291ee397ab6e6e00db5f3f833..6f14d129dc1ee1159b0b35a3434359f9c8e2472e 100644 --- a/src/View/Results/PlotHAdisTS.py +++ b/src/View/Results/PlotHAdisTS.py @@ -35,7 +35,7 @@ logger = logging.getLogger() class PlotH(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, - results=None, reach_id=0, profile_id=0, + results=None, reach_id=0, profile_id=0, pol_id=0, parent=None): super(PlotH, self).__init__( canvas=canvas, @@ -50,6 +50,7 @@ class PlotH(PamhyrPlot): self._current_timestamp = max(results.get("timestamps")) self._current_reach_id = reach_id self._current_profile_id = profile_id + self._current_pol_id = pol_id self.label_x = _translate("Results", "Time (s)") self.label_y = _translate("Results", "Discharge (m³/s)") @@ -81,14 +82,13 @@ class PlotH(PamhyrPlot): reach = self.results.river.reach(self._current_reach_id) profile = reach.profile(self._current_profile_id) + pollutant = self._current_pol_id if reach.geometry.number_profiles == 0: self._init = False return - #self.draw_max(reach) - self.draw_data(reach, profile) - #self.draw_current(reach, profile) + self.draw_data(reach, profile, pollutant) self.set_ticks_time_formater() @@ -97,24 +97,26 @@ class PlotH(PamhyrPlot): self.idle() self._init = True - def draw_data(self, reach, profile): + def draw_data(self, reach, profile, pollutant): self.ts = list(self.results.get("timestamps")) self.ts.sort() x = self.ts #y = profile.get_key("Q") #First 0 for pol and second 0 for phys var - y = list(map(lambda data_el: data_el[0][0], profile.get_key("pols"))) + y = list(map(lambda data_el: data_el[pollutant][0], profile.get_key("pols"))) print("************//////////////////") print("profile: ", self._current_profile_id) print("reach: ", self._current_reach_id) + print("pollutant: ", pollutant) - print("*****************draw data: ", len(x),len(y)) - print("x: ", x) - print("y: ", y) - print("reach: ", reach) - print("profile: ", profile) + ###print("*****************draw data: ", len(x),len(y)) + ###print("x: ", x) + ###print("y: ", y) + ###print("reach: ", reach) + ###print("profile: ", profile) + ###print("pollutant: ", pollutant) self._line, = self.canvas.axes.plot( x, y, @@ -123,46 +125,6 @@ class PlotH(PamhyrPlot): **self.plot_default_kargs ) - def draw_current(self, reach, profile): - min_y, max_y = reduce( - lambda acc, p: ( - acc[0] + [min(p.get_key("Q"))], - acc[1] + [max(p.get_key("Q"))] - ), - reach.profiles, - ([], []) - ) - - self._current, = self.canvas.axes.plot( - [self._current_timestamp, self._current_timestamp], - [min(min_y), max(max_y)], - # label=self.label_timestamp, - color=self.color_plot_river_bottom, - linestyle="dashed", - lw=1., - ) - - def draw_max(self, reach): - self.ts = list(self.results.get("timestamps")) - self.ts.sort() - - x = self.ts - y = [] - for ts in x: - ts_y = -9999 - for profile in reach.profiles: - q = profile.get_ts_key(ts, "Q") - ts_y = max(ts_y, q) - y.append(ts_y) - - self._line_max, = self.canvas.axes.plot( - x, y, - label=self.label_discharge_max, - color=self.color_plot_highlight, - linestyle='dotted', - **self.plot_default_kargs - ) - def set_reach(self, reach_id): self._current_reach_id = reach_id self._current_profile_id = 0 @@ -172,6 +134,10 @@ class PlotH(PamhyrPlot): self._current_profile_id = profile_id self.update() + def set_pollutant(self, pol_id): + self._current_pol_id = pol_id + self.update() + def set_timestamp(self, timestamp): self._current_timestamp = timestamp self.update() @@ -187,15 +153,10 @@ class PlotH(PamhyrPlot): def update_data(self): reach = self.results.river.reach(self._current_reach_id) profile = reach.profile(self._current_profile_id) + pollutant = self._current_pol_id x = self.ts #y = profile.get_key("Q") - y = list(map(lambda data_el: data_el[0][0], profile.get_key("pols"))) + y = list(map(lambda data_el: data_el[pollutant][0], profile.get_key("pols"))) self._line.set_data(x, y) - - ### _, min_max = self._current.get_data() - ###self._current.set_data( - ###self._current_timestamp, - ###min_max - ###) diff --git a/src/View/Results/TableAdisTS.py b/src/View/Results/TableAdisTS.py index d798ddf25b5d142e15abeed363460b48d24e50e5..c5bdfda348433f4f58643e27b7d4dd8f5cdb2b57 100644 --- a/src/View/Results/TableAdisTS.py +++ b/src/View/Results/TableAdisTS.py @@ -45,13 +45,13 @@ _translate = QCoreApplication.translate class TableModel(PamhyrTableModel): def _setup_lst(self): _river = self._data.river - print("//////////////////opt_data: ", self._opt_data) - print("data: ", self._data) - print("river: ", _river) - print("reaches: ", _river.reachs) + ###print("//////////////////opt_data: ", self._opt_data) + ###print("data: ", self._data) + ###print("river: ", _river) + ###print("reaches: ", _river.reachs) if self._opt_data == "reach": self._lst = _river.reachs - print("optreach: ", self._lst) + ###print("optreach: ", self._lst) elif self._opt_data == "profile": self._lst = _river.reach(0).profiles elif self._opt_data == "raw_data": @@ -59,10 +59,10 @@ class TableModel(PamhyrTableModel): elif self._opt_data == "pollutants": tmp_list = self._data.pollutants_list.copy() tmp_list.remove("total_sediment") - print(type(tmp_list)) + ###print(type(tmp_list)) tmp_list.insert(len(tmp_list), "total_sediment") self._lst = tmp_list - print("=====table pollutants: ", self._lst) + ###print("=====table pollutants: ", self._lst) elif self._opt_data == "phys_var": self._lst = self._data.phys_var_list #print("=====table pollutants: ", self._lst) diff --git a/src/View/Results/WindowAdisTS.py b/src/View/Results/WindowAdisTS.py index 0c80d1de59c89cf39e471c2596cd497965aa0056..c9a01d8e1bc7dd246ab199b77b923c4a3164e8a4 100644 --- a/src/View/Results/WindowAdisTS.py +++ b/src/View/Results/WindowAdisTS.py @@ -153,6 +153,7 @@ class ResultsWindowAdisTS(PamhyrWindow): results=self._results, reach_id=0, profile_id=0, + pol_id=0, trad=self._trad, toolbar=self.toolbar_4 ) @@ -185,8 +186,17 @@ class ResultsWindowAdisTS(PamhyrWindow): pname = profile.name if profile.name != "" else profile.kp + # Pollutant + table = self.find(QTableView, f"tableView_pollutants") + indexes = table.selectedIndexes() + if len(indexes) == 0: + pollutant = self._results.pollutants_list[0] + else: + pollutant = self._results.pollutants_list[indexes[0].row()] + return (f"Reach: {reach.name} | " + - f"Profile: {pname})") + f"Profile: {pname} | " + + f"Pollutant: {pollutant}") def setup_statusbar(self): txt = self._compute_status_label() @@ -201,7 +211,7 @@ class ResultsWindowAdisTS(PamhyrWindow): # Action actions = { "action_reload": self._reload, - "action_add": self._add_custom_plot, + ###"action_add": self._add_custom_plot, "action_export": self.export, } @@ -214,10 +224,11 @@ class ResultsWindowAdisTS(PamhyrWindow): fun = { "reach": self._set_current_reach, "profile": self._set_current_profile, + "pollutants": self._set_current_pol, "raw_data": self._set_current_profile_raw_data, } - for t in ["reach", "profile"]:###, "raw_data"]: + for t in ["reach", "profile", "pollutants"]:###, "raw_data"]: table = self.find(QTableView, f"tableView_{t}") table.selectionModel()\ @@ -258,18 +269,41 @@ class ResultsWindowAdisTS(PamhyrWindow): ) table.scrollTo(index) - def update(self, reach_id=None, profile_id=None, timestamp=None): + def update_table_selection_pol(self, ind): + for t in ["pollutants"]:###, "raw_data"]: + table = self.find(QTableView, f"tableView_{t}") + selectionModel = table.selectionModel() + index = table.model().index(ind, 0) + + selectionModel.select( + index, + QItemSelectionModel.Rows | + QItemSelectionModel.ClearAndSelect | + QItemSelectionModel.Select + ) + table.scrollTo(index) + + def update(self, reach_id=None, profile_id=None, pol_id=None, timestamp=None): if reach_id is not None: self.plot_h.set_reach(reach_id) self.update_table_selection_reach(reach_id) self.update_table_selection_profile(0) + self.update_table_selection_pol(0) if profile_id is not None: self.plot_h.set_profile(profile_id) self.update_table_selection_profile(profile_id) + print("--**//++update pol_id before None: ", pol_id) + + if pol_id is not None: + print("--**//++//**//** update pol_id: ", pol_id) + self.plot_h.set_pollutant(pol_id) + + self.update_table_selection_pol(pol_id) + if timestamp is not None: self.plot_h.set_timestamp(timestamp) @@ -277,27 +311,6 @@ class ResultsWindowAdisTS(PamhyrWindow): self.update_statusbar() - def _get_current_reach(self): - table = self.find(QTableView, f"tableView_reach") - indexes = table.selectedIndexes() - if len(indexes) == 0: - return 0 - - return indexes[0].row() - - def _get_current_profile(self): - table = self.find(QTableView, f"tableView_profile") - indexes = table.selectedIndexes() - if len(indexes) == 0: - return 0 - - return indexes[0].row() - - def _get_current_timestamp(self): - return self._timestamps[ - self._slider_time.value() - ] - def _set_current_reach(self): table = self.find(QTableView, f"tableView_reach") indexes = table.selectedIndexes() @@ -316,6 +329,16 @@ class ResultsWindowAdisTS(PamhyrWindow): self.update(profile_id=ind) ###self._slider_profile.setValue(ind) + def _set_current_pol(self): + table = self.find(QTableView, f"tableView_pollutants") + indexes = table.selectedIndexes() + if len(indexes) == 0: + return + + ind = indexes[0].row() + print("set pol id: ", ind) + self.update(pol_id=ind) + def _set_current_profile_raw_data(self): table = self.find(QTableView, f"tableView_raw_data") indexes = table.selectedIndexes() @@ -353,49 +376,6 @@ class ResultsWindowAdisTS(PamhyrWindow): self._reload_plots() ###self._reload_slider() - def _add_custom_plot(self): - dlg = CustomPlotValuesSelectionDialog(parent=self) - if dlg.exec(): - x, y = dlg.value - self.create_new_tab_custom_plot(x, y) - - def create_new_tab_custom_plot(self, x: str, y: list): - name = f"{x}: {','.join(y)}" - wname = f"tab_custom_{x}_{y}" - - tab_widget = self.find(QTabWidget, f"tabWidget") - - widget = QWidget() - grid = QGridLayout() - - widget.setObjectName(wname) - - canvas = MplCanvas(width=5, height=4, dpi=100) - canvas.setObjectName(f"canvas_{x}_{y}") - toolbar = PamhyrPlotToolbar( - canvas, self - ) - - plot = CustomPlot( - x, y, - self._get_current_reach(), - self._get_current_profile(), - self._get_current_timestamp(), - data=self._results, - canvas=canvas, - toolbar=toolbar, - parent=self, - ) - plot.draw() - - # Add plot to additional plot - self._additional_plot[name] = plot - - grid.addWidget(toolbar, 0, 0) - grid.addWidget(canvas, 1, 0) - widget.setLayout(grid) - tab_widget.addTab(widget, name) - def _copy(self): logger.info("TODO: copy")