Pepper render routines with time-slice calls
parent
3574548fe2
commit
1b9f6a7152
|
@ -140,7 +140,7 @@ def render_baritems(
|
|||
# - if instead we are in a downsamplig state then we to
|
||||
x_gt = 6
|
||||
uppx = curve.x_uppx()
|
||||
print(f'BARS UPPX: {uppx}')
|
||||
# print(f'BARS UPPX: {uppx}')
|
||||
in_line = should_line = curve.isVisible()
|
||||
if (
|
||||
in_line
|
||||
|
@ -280,26 +280,25 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
arr = shm.array
|
||||
|
||||
# get relative slice indexes into array
|
||||
(
|
||||
abs_slc,
|
||||
read_slc,
|
||||
mask,
|
||||
) = self.flume.slice_from_time(
|
||||
arr,
|
||||
start_t=lbar,
|
||||
stop_t=rbar,
|
||||
)
|
||||
# (
|
||||
# abs_slc,
|
||||
# read_slc,
|
||||
# mask,
|
||||
# ) = self.flume.slice_from_time(
|
||||
# arr,
|
||||
# start_t=lbar,
|
||||
# stop_t=rbar,
|
||||
# )
|
||||
# slice_view = arr[mask]
|
||||
|
||||
# TODO: should we just add/use a method
|
||||
# on the shm to do this?
|
||||
|
||||
# ifirst = arr[0]['index']
|
||||
# slice_view = arr[
|
||||
# lbar - ifirst:
|
||||
# (rbar - ifirst) + 1
|
||||
# ]
|
||||
|
||||
slice_view = arr[mask]
|
||||
ifirst = arr[0]['index']
|
||||
slice_view = arr[
|
||||
lbar - ifirst:
|
||||
(rbar - ifirst) + 1
|
||||
]
|
||||
|
||||
if not slice_view.size:
|
||||
return None
|
||||
|
@ -349,7 +348,7 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
|
||||
def datums_range(
|
||||
self,
|
||||
index_field: str = 'time',
|
||||
index_field: str = 'index',
|
||||
|
||||
) -> tuple[
|
||||
int, int, int, int, int, int
|
||||
|
@ -359,11 +358,11 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
|
||||
'''
|
||||
l, r = self.view_range()
|
||||
l = round(l)
|
||||
r = round(r)
|
||||
|
||||
# # TODO: avoid this and have shm passed
|
||||
# # in earlier.
|
||||
if index_field == 'index':
|
||||
l, r = round(l), round(r)
|
||||
|
||||
# # TODO: avoid this and have shm passed in earlier?
|
||||
# if self.shm is None:
|
||||
# # haven't initialized the viz yet
|
||||
# return (0, l, 0, 0, r, 0)
|
||||
|
@ -383,22 +382,14 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
stop,
|
||||
)
|
||||
|
||||
def bars_range(self) -> tuple[int, int, int, int]:
|
||||
'''
|
||||
Return a range tuple for the bars present in view.
|
||||
|
||||
'''
|
||||
start, l, datum_start, datum_stop, r, stop = self.datums_range()
|
||||
return l, datum_start, datum_stop, r
|
||||
|
||||
def read(
|
||||
self,
|
||||
array_field: Optional[str] = None,
|
||||
index_field: str = 'time',
|
||||
index_field: str = 'index',
|
||||
|
||||
) -> tuple[
|
||||
int, int, np.ndarray,
|
||||
int, int, np.ndarray,
|
||||
int, int, np.ndarray,
|
||||
int, int, np.ndarray,
|
||||
]:
|
||||
'''
|
||||
Read the underlying shm array buffer and
|
||||
|
@ -410,10 +401,6 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
# readable data
|
||||
array = self.shm.array
|
||||
|
||||
# indexes = array[index_field]
|
||||
# ifirst = indexes[0]
|
||||
# ilast = indexes[-1]
|
||||
|
||||
(
|
||||
ifirst,
|
||||
l,
|
||||
|
@ -423,36 +410,40 @@ class Viz(msgspec.Struct): # , frozen=True):
|
|||
ilast,
|
||||
) = self.datums_range(index_field=index_field)
|
||||
|
||||
(
|
||||
abs_slc,
|
||||
read_slc,
|
||||
mask,
|
||||
) = self.flume.slice_from_time(
|
||||
array,
|
||||
start_t=lbar,
|
||||
stop_t=rbar,
|
||||
)
|
||||
abs_slc = slice(ifirst, ilast)
|
||||
|
||||
# (
|
||||
# abs_slc,
|
||||
# read_slc,
|
||||
# in_view,
|
||||
# ) = self.flume.view_data(
|
||||
# self.plot,
|
||||
# )
|
||||
# get read-relative indices adjusting
|
||||
# for master shm index.
|
||||
# lbar_i = max(l, ifirst) - ifirst
|
||||
# rbar_i = min(r, ilast) - ifirst
|
||||
in_view = array[read_slc]
|
||||
# TODO: support time slicing
|
||||
if index_field == 'time':
|
||||
(
|
||||
abs_slc,
|
||||
read_slc,
|
||||
mask,
|
||||
) = self.flume.slice_from_time(
|
||||
array,
|
||||
start_t=lbar,
|
||||
stop_t=rbar,
|
||||
)
|
||||
in_view = array[read_slc]
|
||||
|
||||
# array-index slicing
|
||||
# TODO: can we do time based indexing using arithmetic presuming
|
||||
# a uniform time stamp step size?
|
||||
else:
|
||||
# get read-relative indices adjusting for master shm index.
|
||||
lbar_i = max(l, ifirst) - ifirst
|
||||
rbar_i = min(r, ilast) - ifirst
|
||||
|
||||
# NOTE: the slice here does NOT include the extra ``+ 1``
|
||||
# BUT the ``in_view`` slice DOES..
|
||||
read_slc = slice(lbar_i, rbar_i)
|
||||
in_view = array[lbar_i: rbar_i + 1]
|
||||
|
||||
# XXX: same as ^
|
||||
# to_draw = array[lbar - ifirst:(rbar - ifirst) + 1]
|
||||
|
||||
if array_field:
|
||||
array = array[array_field]
|
||||
|
||||
# TODO: we could do it this way as well no?
|
||||
# to_draw = array[lbar - ifirst:(rbar - ifirst) + 1]
|
||||
# in_view = array[lbar_i: rbar_i + 1]
|
||||
|
||||
return (
|
||||
# abs indices + full data set
|
||||
abs_slc.start,
|
||||
|
|
Loading…
Reference in New Issue