debug compare results

terraz_dev
Theophile Terraz 2025-01-30 12:31:02 +01:00
parent e3229c8183
commit 0fa3ca5fad
9 changed files with 54 additions and 23 deletions

View File

@ -168,7 +168,7 @@ class ProfileXYZ(Profile, SQLSubModel):
lambda s: s.id == sl, lambda s: s.id == sl,
data["sediment_layers_list"].sediment_layers data["sediment_layers_list"].sediment_layers
) )
) , None)
data["profile"] = new data["profile"] = new
new._points = PointXYZ._db_load(execute, data.copy()) new._points = PointXYZ._db_load(execute, data.copy())

View File

@ -1627,6 +1627,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
return None return None
solver3 = GenericSolver(solver1.name+" - "+solver2.name) solver3 = GenericSolver(solver1.name+" - "+solver2.name)
solver4 = GenericSolver(solver1.name)
solver5 = GenericSolver(solver2.name)
result1 = solver1.results( result1 = solver1.results(
self._study, self._study,
@ -1657,27 +1659,54 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
# return [result1, result2] # return [result1, result2]
result3 = Results(self._study, solver3) result3 = Results(self._study, solver3)
result4 = Results(self._study, solver1)
result5 = Results(self._study, solver2)
result3.set("nb_reach", result1.get("nb_reach")) 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")) 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"))) ts = list(result1.get("timestamps").intersection(result2.get("timestamps")))
result3.set("timestamps", ts) result3.set("timestamps", ts)
result4.set("timestamps", ts)
result5.set("timestamps", ts)
for i in range(int(result1.get("nb_reach"))): for i in range(int(result1.get("nb_reach"))):
# Add reach to results reach list # Add reach to results reach list
r = result3.river.add(i) r = result3.river.add(i)
r = result4.river.add(i)
r = result5.river.add(i)
for timestamp in result3.get("timestamps"): for timestamp in result3.get("timestamps"):
for r in range(int(result1.get("nb_reach"))): for r in range(int(result1.get("nb_reach"))):
reach1 = result1.river.reach(r) reach1 = result1.river.reach(r)
reach2 = result2.river.reach(r) reach2 = result2.river.reach(r)
reach3 = result3.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 p, (profile1, profile2) in enumerate(zip(reach1.profiles, reach2.profiles)):
for key in ["Z", "Q", "V"]: for key in ["Z", "Q", "V"]:
d1 = profile1.get_ts_key(timestamp, key) d1 = profile1.get_ts_key(timestamp, key)
d2 = profile2.get_ts_key(timestamp, key) d2 = profile2.get_ts_key(timestamp, key)
reach3.set(p, timestamp, key, d1-d2) 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 [result1, result2, result3] return [result4, result5, result3]
def open_results_adists(self): def open_results_adists(self):
if self._study is None: if self._study is None:

View File

@ -144,7 +144,7 @@ class PlotAC(PamhyrPlot):
self.update() self.update()
def set_result(self, res_id): def set_result(self, res_id):
self._current_result_id = res_id self._current_res_id = res_id
self.update() self.update()
def set_timestamp(self, timestamp): def set_timestamp(self, timestamp):

View File

@ -62,8 +62,8 @@ class PlotH(PamhyrPlot):
self._isometric_axis = False self._isometric_axis = False
self._auto_relim_update = False #self._auto_relim_update = False
self._autoscale_update = False #self._autoscale_update = False
@property @property
def results(self): def results(self):
@ -156,7 +156,7 @@ class PlotH(PamhyrPlot):
self.update() self.update()
def set_result(self, res_id): def set_result(self, res_id):
self._current_result_id = res_id self._current_res_id = res_id
self.draw() self.draw()
def set_timestamp(self, timestamp): def set_timestamp(self, timestamp):

View File

@ -318,7 +318,7 @@ class PlotRKC(PamhyrPlot):
self.update_current() self.update_current()
def set_result(self, res_id): def set_result(self, res_id):
self._current_result_id = res_id self._current_res_id = res_id
self.update() self.update()
def set_timestamp(self, timestamp): def set_timestamp(self, timestamp):

View File

@ -166,6 +166,7 @@ class PlotXY(PamhyrPlot):
if reach.geometry.number_profiles == 0: if reach.geometry.number_profiles == 0:
self._init = False self._init = False
return return
self.line_xy = []
# TODO uncomment to draw all the reaches # TODO uncomment to draw all the reaches
# self.draw_other_profiles(reaches) # self.draw_other_profiles(reaches)
for xy in zip(reach.geometry.get_x(), for xy in zip(reach.geometry.get_x(),
@ -315,9 +316,8 @@ class PlotXY(PamhyrPlot):
self.update_idle() self.update_idle()
def set_result(self, res_id): def set_result(self, res_id):
self._current_result_id = res_id self._current_res_id = res_id
self.update_profile() self.update()
self.update_idle()
def set_timestamp(self, timestamp): def set_timestamp(self, timestamp):
self._current_timestamp = timestamp self._current_timestamp = timestamp

View File

@ -89,15 +89,22 @@ class TableModel(PamhyrTableModel):
return f"{p.rk:.4f}" return f"{p.rk:.4f}"
return f"{p.name}" return f"{p.name}"
elif self._headers[column] == "water_elevation": 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}" return f"{v:.4f}"
elif self._headers[column] == "discharge": 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}" return f"{v:.4f}"
elif self._headers[column] == "velocity": elif self._headers[column] == "velocity":
q = self._lst[row].get_ts_key(self._timestamp, "Q") try:
z = self._lst[row].get_ts_key(self._timestamp, "Z") v = self._lst[row].get_ts_key(self._timestamp, "V")
v = self._lst[row].get_ts_key(self._timestamp, "V") except:
v = 0.0
return f"{v:.4f}" return f"{v:.4f}"
elif self._headers[column] == "width": elif self._headers[column] == "width":
z = self._lst[row].get_ts_key(self._timestamp, "Z") z = self._lst[row].get_ts_key(self._timestamp, "Z")

View File

@ -438,6 +438,7 @@ class ResultsWindow(PamhyrWindow):
self.update_table_selection_profile(profile_id) self.update_table_selection_profile(profile_id)
if solver_id is not None: if solver_id is not None:
self._current_results = solver_id
self.plot_xy.set_result(solver_id) self.plot_xy.set_result(solver_id)
self.plot_ac.set_result(solver_id) self.plot_ac.set_result(solver_id)
self.plot_rkc.set_result(solver_id) self.plot_rkc.set_result(solver_id)
@ -917,10 +918,4 @@ class ResultsWindow(PamhyrWindow):
return my_dict return my_dict
def get_timestamps(self): def get_timestamps(self):
if len(self._results) == 1: self._timestamps = sorted(list(self._results[0].get("timestamps")))
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"))
))

Binary file not shown.