start work on results buffers

dev_dylan
Theophile Terraz 2026-04-02 11:54:55 +02:00
parent b00cca953e
commit 242df7f648
3 changed files with 20 additions and 0 deletions

View File

@ -219,6 +219,11 @@ class Results(SQLSubModel):
qlog=None,
)
def bufferize(self, key):
if self.is_valid:
for reach in self._river._reachs:
reach.bufferize(self._meta_data["timestamps"], key)
def timestamps_to_struct(self):
ts = self._meta_data["timestamps"]
sf = ">" + ''.join(itertools.repeat("d", len(ts)))

View File

@ -17,6 +17,7 @@
import struct
import logging
import itertools
import numpy as np
from tools import flatten
from functools import reduce
@ -275,6 +276,7 @@ class Reach(SQLSubModel):
lambda p: p.name[0:8] != 'interpol', self._profiles
)
)
self._buffers = {}
def __len__(self):
return len(self._profiles)
@ -295,6 +297,10 @@ class Reach(SQLSubModel):
def profile_mask(self):
return self._profile_mask
@property
def buffers(self):
return self._buffers
def profile(self, id):
return self._profiles[id]
@ -304,6 +310,11 @@ class Reach(SQLSubModel):
def has_sediment(self):
return any(map(lambda profile: profile.has_sediment(), self._profiles))
def bufferize(self, timestamps, key):
self._buffers[key] = np.zeros((len(timestamps), len(self)))
for i, p in enumerate(self._profiles):
self._buffers[key][:, i] = p.get_key(key)
@classmethod
def _db_create(cls, execute, ext=""):
return cls._create_submodel(execute)

View File

@ -1196,6 +1196,10 @@ class Mage8(Mage):
r.set(i, t, "V", v)
logger.info(f"read_bin: ... end with {len(ts)} timestamp read")
results.bufferize("Z")
results.bufferize("Q")
results.bufferize("V")
@timer
def read_gra(self, study, repertory, results, qlog=None, name="0"):
if not study.river.has_sediment():