Results: Clear db load code.

scenarios
Pierre-Antoine 2025-09-26 10:46:57 +02:00
parent 82b0837d8c
commit 6c4f6e269c
1 changed files with 30 additions and 21 deletions

View File

@ -153,20 +153,36 @@ class Profile(SQLSubModel):
len_values = len(values) len_values = len(values)
values = struct.unpack(sf, data) values = struct.unpack(sf, data)
elif key in ["sl"]: elif key in ["sl"]:
nb_layer = len_data / len(timestamps) / 3
sf = ">" + ''.join(itertools.repeat("f", len_data)) sf = ">" + ''.join(itertools.repeat("f", len_data))
values = struct.unpack(sf, data) values = struct.unpack(sf, data)
values = cls._db_load_data_sl_format(values, len_data, timestamps)
for timestamp, value in zip(timestamps, values):
new_data.set(timestamp, key, value)
if key == "Z":
new_data.update_water_limits(timestamp, value)
return list(new.values())
@classmethod
def _db_load_data_sl_format(cls, values, len_data, timestamps):
tuple_size = 3
# HACK: Transforme list of value to list of n-tuple
# sediment results: (h, d50, sigma)
tmp_values = [[]] tmp_values = [[]]
for value in values: for value in values:
t = tmp_values[-1] t = tmp_values[-1]
if len(t) < 3: if len(t) < tuple_size:
t.append(value) t.append(value)
else: else:
tmp_values.append([value]) tmp_values.append([value])
tmp_values = list(map(tuple, tmp_values)) tmp_values = list(map(tuple, tmp_values))
# HACK: Transforme list of n-tuple to list of n-list
# of n-tuple, where n is the number of layer.
nb_layer = len_data / len(timestamps) / tuple_size
values = [[]] values = [[]]
for value in tmp_values: for value in tmp_values:
t = values[-1] t = values[-1]
@ -175,14 +191,7 @@ class Profile(SQLSubModel):
else: else:
values.append([value]) values.append([value])
values = list(map(lambda x: [x], values)) return list(map(lambda x: [x], values))
for timestamp, value in zip(timestamps, values):
new_data.set(timestamp, key, value)
if key == "Z":
new_data.update_water_limits(timestamp, value)
return list(new.values())
def update_water_limits(self, timestamp, z): def update_water_limits(self, timestamp, z):
limits = self.geometry.get_water_limits(z) limits = self.geometry.get_water_limits(z)