mirror of https://gitlab.com/pamhyr/pamhyr2
Results: Add posibility to save multiple results for different solver.
parent
08c414a66e
commit
819ae41c00
|
|
@ -52,6 +52,9 @@ class Results(SQLSubModel):
|
||||||
"study_revision": study.status.version,
|
"study_revision": study.status.version,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if solver is not None:
|
||||||
|
self.set("solver_type", solver._type)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def date(self):
|
def date(self):
|
||||||
date = self._meta_data["creation_date"]
|
date = self._meta_data["creation_date"]
|
||||||
|
|
@ -147,7 +150,7 @@ class Results(SQLSubModel):
|
||||||
)
|
)
|
||||||
|
|
||||||
if table is None:
|
if table is None:
|
||||||
yield new
|
yield
|
||||||
|
|
||||||
if len(table) > 1:
|
if len(table) > 1:
|
||||||
logger.warning("Multiple results for this scenario")
|
logger.warning("Multiple results for this scenario")
|
||||||
|
|
@ -178,23 +181,32 @@ class Results(SQLSubModel):
|
||||||
data["timestamps"] = sorted(ts)
|
data["timestamps"] = sorted(ts)
|
||||||
new_results._river = River._db_load(execute, data)
|
new_results._river = River._db_load(execute, data)
|
||||||
|
|
||||||
new = new_results
|
yield (solver_type, new_results)
|
||||||
|
|
||||||
yield new
|
def _db_save_clear(self, execute, solver_type, data=None):
|
||||||
|
old_pid = execute(
|
||||||
|
"SELECT pamhyr_id FROM results " +
|
||||||
|
f"WHERE scenario = {self._owner_scenario} " +
|
||||||
|
f"AND solver_type = '{solver_type}'"
|
||||||
|
)
|
||||||
|
if len(old_pid) != 0:
|
||||||
|
old_pid = old_pid[0]
|
||||||
|
|
||||||
|
execute(
|
||||||
|
"DELETE FROM results " +
|
||||||
|
f"WHERE scenario = {self._owner_scenario} " +
|
||||||
|
f"AND solver_type = '{solver_type}'"
|
||||||
|
)
|
||||||
|
execute(
|
||||||
|
"DELETE FROM results_data " +
|
||||||
|
f"WHERE scenario = {self._owner_scenario} " +
|
||||||
|
f"AND results = '{old_pid}'"
|
||||||
|
)
|
||||||
|
|
||||||
def _db_save(self, execute, data=None):
|
def _db_save(self, execute, data=None):
|
||||||
if self._status.scenario.id != self._owner_scenario:
|
if self._status.scenario.id != self._owner_scenario:
|
||||||
return
|
return
|
||||||
|
|
||||||
execute(
|
|
||||||
"DELETE FROM results " +
|
|
||||||
f"WHERE scenario = {self._owner_scenario}"
|
|
||||||
)
|
|
||||||
execute(
|
|
||||||
"DELETE FROM results_data " +
|
|
||||||
f"WHERE scenario = {self._owner_scenario}"
|
|
||||||
)
|
|
||||||
|
|
||||||
pid = self._pamhyr_id
|
pid = self._pamhyr_id
|
||||||
if self._solver is None:
|
if self._solver is None:
|
||||||
solver_name = self.get("solver_name")
|
solver_name = self.get("solver_name")
|
||||||
|
|
@ -203,6 +215,8 @@ class Results(SQLSubModel):
|
||||||
solver_name = self._solver._name
|
solver_name = self._solver._name
|
||||||
solver_type = self._solver._type
|
solver_type = self._solver._type
|
||||||
|
|
||||||
|
self._db_save_clear(execute, solver_type, data=data)
|
||||||
|
|
||||||
ts = sorted(self.get("timestamps"))
|
ts = sorted(self.get("timestamps"))
|
||||||
sf = ">" + ''.join(itertools.repeat("d", len(ts)))
|
sf = ">" + ''.join(itertools.repeat("d", len(ts)))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -227,7 +227,7 @@ class Profile(SQLSubModel):
|
||||||
values = list(map(float, values))
|
values = list(map(float, values))
|
||||||
sf = ">" + ''.join(itertools.repeat("f", len(values)))
|
sf = ">" + ''.join(itertools.repeat("f", len(values)))
|
||||||
len_values = len(values)
|
len_values = len(values)
|
||||||
elif key is "sl":
|
elif key == "sl":
|
||||||
# HACK: Some dirty code to transforme list of list of
|
# HACK: Some dirty code to transforme list of list of
|
||||||
# tuple to list of values and ensure the values is
|
# tuple to list of values and ensure the values is
|
||||||
# float type...
|
# float type...
|
||||||
|
|
|
||||||
|
|
@ -505,7 +505,7 @@ class River(Graph):
|
||||||
self._D90AdisTS = D90AdisTSList(status=self._status)
|
self._D90AdisTS = D90AdisTSList(status=self._status)
|
||||||
self._DIFAdisTS = DIFAdisTSList(status=self._status)
|
self._DIFAdisTS = DIFAdisTSList(status=self._status)
|
||||||
|
|
||||||
self._results = None
|
self._results = {}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _db_create(cls, execute):
|
def _db_create(cls, execute):
|
||||||
|
|
@ -620,7 +620,10 @@ class River(Graph):
|
||||||
return new
|
return new
|
||||||
|
|
||||||
def _db_load_results(self, execute, data=None):
|
def _db_load_results(self, execute, data=None):
|
||||||
self._results = Results._db_load(execute, data)
|
results_lst = Results._db_load(execute, data)
|
||||||
|
|
||||||
|
for solv_type, results in results_lst:
|
||||||
|
self._results[solv_type] = results
|
||||||
|
|
||||||
def _db_save(self, execute, data=None):
|
def _db_save(self, execute, data=None):
|
||||||
self._db_save_delete_artefact(execute, data)
|
self._db_save_delete_artefact(execute, data)
|
||||||
|
|
@ -647,8 +650,8 @@ class River(Graph):
|
||||||
objs.append(self._D90AdisTS)
|
objs.append(self._D90AdisTS)
|
||||||
objs.append(self._DIFAdisTS)
|
objs.append(self._DIFAdisTS)
|
||||||
|
|
||||||
if self.results is not None:
|
for solv_type in self.results:
|
||||||
objs.append(self.results)
|
objs.append(self.results[solv_type])
|
||||||
|
|
||||||
self._save_submodel(execute, objs, data)
|
self._save_submodel(execute, objs, data)
|
||||||
return True
|
return True
|
||||||
|
|
@ -902,7 +905,9 @@ Last export at: @date."""
|
||||||
|
|
||||||
@results.setter
|
@results.setter
|
||||||
def results(self, results):
|
def results(self, results):
|
||||||
self._results = results
|
solv_type = results.get("solver_type")
|
||||||
|
|
||||||
|
self._results[solv_type] = results
|
||||||
|
|
||||||
def _split_reach(self, reach, profile):
|
def _split_reach(self, reach, profile):
|
||||||
node1 = reach.node1
|
node1 = reach.node1
|
||||||
|
|
|
||||||
|
|
@ -596,7 +596,11 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
if self._study is None:
|
if self._study is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return self._study.results
|
results = self._study.results
|
||||||
|
if self._last_solver._type in results:
|
||||||
|
return self._study.results[self._last_solver._type]
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
@last_results.setter
|
@last_results.setter
|
||||||
def last_results(self, results):
|
def last_results(self, results):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue