From 0fa3ca5fadfa291a97982c1a431e2d21e9d0899d Mon Sep 17 00:00:00 2001 From: Theophile Terraz <theophile.terraz@inrae.fr> Date: Thu, 30 Jan 2025 12:31:02 +0100 Subject: [PATCH] debug compare results --- src/Model/Geometry/ProfileXYZ.py | 2 +- src/View/MainWindow.py | 35 ++++++++++++++++++++++++++++--- src/View/Results/PlotAC.py | 2 +- src/View/Results/PlotH.py | 6 +++--- src/View/Results/PlotRKC.py | 2 +- src/View/Results/PlotXY.py | 6 +++--- src/View/Results/Table.py | 17 ++++++++++----- src/View/Results/Window.py | 9 ++------ tests_cases/Saar/Saar.pamhyr | Bin 278528 -> 278528 bytes 9 files changed, 55 insertions(+), 24 deletions(-) diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 4ade5b68..39a15c50 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -168,7 +168,7 @@ class ProfileXYZ(Profile, SQLSubModel): lambda s: s.id == sl, data["sediment_layers_list"].sediment_layers ) - ) + , None) data["profile"] = new new._points = PointXYZ._db_load(execute, data.copy()) diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index b08ac943..cc651de4 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -1627,6 +1627,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): return None solver3 = GenericSolver(solver1.name+" - "+solver2.name) + solver4 = GenericSolver(solver1.name) + solver5 = GenericSolver(solver2.name) result1 = solver1.results( self._study, @@ -1657,27 +1659,54 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): # return [result1, result2] result3 = Results(self._study, solver3) + result4 = Results(self._study, solver1) + result5 = Results(self._study, solver2) result3.set("nb_reach", result1.get("nb_reach")) + result4.set("nb_reach", result1.get("nb_reach")) + result5.set("nb_reach", result1.get("nb_reach")) result3.set("nb_profile", result1.get("nb_profile")) + result4.set("nb_profile", result1.get("nb_profile")) + result5.set("nb_profile", result1.get("nb_profile")) ts = list(result1.get("timestamps").intersection(result2.get("timestamps"))) result3.set("timestamps", ts) + result4.set("timestamps", ts) + result5.set("timestamps", ts) for i in range(int(result1.get("nb_reach"))): # Add reach to results reach list r = result3.river.add(i) + r = result4.river.add(i) + r = result5.river.add(i) for timestamp in result3.get("timestamps"): for r in range(int(result1.get("nb_reach"))): reach1 = result1.river.reach(r) reach2 = result2.river.reach(r) reach3 = result3.river.reach(r) + reach4 = result4.river.reach(r) + reach5 = result5.river.reach(r) for p, (profile1, profile2) in enumerate(zip(reach1.profiles, reach2.profiles)): for key in ["Z", "Q", "V"]: d1 = profile1.get_ts_key(timestamp, key) d2 = profile2.get_ts_key(timestamp, key) - reach3.set(p, timestamp, key, d1-d2) - - return [result1, result2, result3] + d = d1-d2 + reach3.set(p, timestamp, key, d) + reach4.set(p, timestamp, key, d1) + reach5.set(p, timestamp, key, d2) + limits = reach3.profile(p).geometry.get_water_limits( + reach3.profile(p).get_ts_key(timestamp, "Z") + ) + reach3.set( + p, timestamp, + "water_limits", + limits + ) + limits = profile1.get_ts_key(timestamp, "water_limits") + reach4.set(p, timestamp, "water_limits", limits) + limits = profile2.get_ts_key(timestamp, "water_limits") + reach5.set(p, timestamp, "water_limits", limits) + + return [result4, result5, result3] def open_results_adists(self): if self._study is None: diff --git a/src/View/Results/PlotAC.py b/src/View/Results/PlotAC.py index 4c85cabf..a8204708 100644 --- a/src/View/Results/PlotAC.py +++ b/src/View/Results/PlotAC.py @@ -144,7 +144,7 @@ class PlotAC(PamhyrPlot): self.update() def set_result(self, res_id): - self._current_result_id = res_id + self._current_res_id = res_id self.update() def set_timestamp(self, timestamp): diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py index 92b8155a..d5fd0e73 100644 --- a/src/View/Results/PlotH.py +++ b/src/View/Results/PlotH.py @@ -62,8 +62,8 @@ class PlotH(PamhyrPlot): self._isometric_axis = False - self._auto_relim_update = False - self._autoscale_update = False + #self._auto_relim_update = False + #self._autoscale_update = False @property def results(self): @@ -156,7 +156,7 @@ class PlotH(PamhyrPlot): self.update() def set_result(self, res_id): - self._current_result_id = res_id + self._current_res_id = res_id self.draw() def set_timestamp(self, timestamp): diff --git a/src/View/Results/PlotRKC.py b/src/View/Results/PlotRKC.py index 3951e6ac..ea21f435 100644 --- a/src/View/Results/PlotRKC.py +++ b/src/View/Results/PlotRKC.py @@ -318,7 +318,7 @@ class PlotRKC(PamhyrPlot): self.update_current() def set_result(self, res_id): - self._current_result_id = res_id + self._current_res_id = res_id self.update() def set_timestamp(self, timestamp): diff --git a/src/View/Results/PlotXY.py b/src/View/Results/PlotXY.py index 71dcb4b4..013e746e 100644 --- a/src/View/Results/PlotXY.py +++ b/src/View/Results/PlotXY.py @@ -166,6 +166,7 @@ class PlotXY(PamhyrPlot): if reach.geometry.number_profiles == 0: self._init = False return + self.line_xy = [] # TODO uncomment to draw all the reaches # self.draw_other_profiles(reaches) for xy in zip(reach.geometry.get_x(), @@ -315,9 +316,8 @@ class PlotXY(PamhyrPlot): self.update_idle() def set_result(self, res_id): - self._current_result_id = res_id - self.update_profile() - self.update_idle() + self._current_res_id = res_id + self.update() def set_timestamp(self, timestamp): self._current_timestamp = timestamp diff --git a/src/View/Results/Table.py b/src/View/Results/Table.py index ac9224d1..13d7c29d 100644 --- a/src/View/Results/Table.py +++ b/src/View/Results/Table.py @@ -89,15 +89,22 @@ class TableModel(PamhyrTableModel): return f"{p.rk:.4f}" return f"{p.name}" elif self._headers[column] == "water_elevation": - v = self._lst[row].get_ts_key(self._timestamp, "Z") + try: + v = self._lst[row].get_ts_key(self._timestamp, "Z") + except: + v = 0.0 return f"{v:.4f}" elif self._headers[column] == "discharge": - v = self._lst[row].get_ts_key(self._timestamp, "Q") + try: + v = self._lst[row].get_ts_key(self._timestamp, "Q") + except: + v = 0.0 return f"{v:.4f}" elif self._headers[column] == "velocity": - q = self._lst[row].get_ts_key(self._timestamp, "Q") - z = self._lst[row].get_ts_key(self._timestamp, "Z") - v = self._lst[row].get_ts_key(self._timestamp, "V") + try: + v = self._lst[row].get_ts_key(self._timestamp, "V") + except: + v = 0.0 return f"{v:.4f}" elif self._headers[column] == "width": z = self._lst[row].get_ts_key(self._timestamp, "Z") diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index d06ba627..f01313a9 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -438,6 +438,7 @@ class ResultsWindow(PamhyrWindow): self.update_table_selection_profile(profile_id) if solver_id is not None: + self._current_results = solver_id self.plot_xy.set_result(solver_id) self.plot_ac.set_result(solver_id) self.plot_rkc.set_result(solver_id) @@ -917,10 +918,4 @@ class ResultsWindow(PamhyrWindow): return my_dict def get_timestamps(self): - if len(self._results) == 1: - self._timestamps = sorted(list(self._results[0].get("timestamps"))) - else: # len(self._results) == 2: - self._timestamps = sorted(list( - self._results[0].get("timestamps").intersection( - self._results[1].get("timestamps")) - )) + self._timestamps = sorted(list(self._results[0].get("timestamps"))) diff --git a/tests_cases/Saar/Saar.pamhyr b/tests_cases/Saar/Saar.pamhyr index 9f1c08bfece12cf21069193a611f9ba41d04fc5b..3ed59054f0eeb9bae9d534239cbddf89b15c06ab 100644 GIT binary patch delta 641 zcmZo@5Nv1=+>k5JXgWDhUX0Je(9FWZ$Xw6R)WFQrX!9g_`2<Fz&70~S1sIh!f9V%! z$S~sIW#GTXznOmue*(W9zck+uzAJpo`5O5`_>B03dB5>q<K4mA%^S_D&GVb*GS6zB zZk`Ap4elS@$GDermvDP>D{}qky1+G`E0@cYOPPy-^BU(W&PL8~PE$@UjvE~7IXXF# zIczw1H#RP0uh%tVV_<X@l;uoJ$t*4@j?c`?EXhpFiBHbYOHR!zDM~EK%+E73fXJ37 zs~Q58n+nQuK$Vwd=B5^xq!z^ICZ?w%l&Kg1l^F}lvZE_YE-ph-rO#FmR>p>|EGZMo zPIWz?VU~ijtmvwWlZ#SQkrW!}0u_1+%d$WfX66>;WF}{pfc+3(kXV$Mn_7}uWT0mX zQBa<&S+4`s;>at@oR|ahb8c>8UP^pUW?pK1Vo`c&E-(a&VQLk$fl5`yWtl)qVg5EY zFwlbsj)oQ+1E;2{EJ#6GW*#sULCOpa&8-X!AP8obx+WU~hdNND0#GR^$RR3W%7BVt zDz~qdWb|W|Rb&TRt}iOi1`21m?eV~HGBz`qE-KHsg$-g)`+0drAZ7w$=I!U@Sqv2b DO&7=) delta 201 zcmZo@5Nv1=+>k5JXgE1fUX0Jg+`z=l)Kt&h%*@QveDfrE`2<Fd&70~S1sEANf9V%! z2+`nN%fNq&e>49S{sewIerdkneAoF_@wM=U^O^FA@&4q!$-A4kk2j82kLMrHHJ)`m zeLT@T+T6dnPjau|F6Z{)R^eviy3DnRtANXgOO1<}^Csuojg6t4+gC|4`msvMv9mES z>hp`U<tC=5#+PK~rWTi^7Q`oI=1musXWYVOX=!O?Y1w{Wo)L(dfS7svd3hE?1pqBH BI|l#& -- GitLab