Move `ui._compression`/`._pathops` to `.data` subpkg

Since these modules no longer contain Qt specific code we might
as well include them in the data sub-package.

Also, add `IncrementalFormatter.index_field` as single point to def the
indexing field that should be used for all x-domain graphics-data
rendering.
epoch_indexing_and_dataviz_layer
Tyler Goodlet 2022-11-24 16:22:20 -05:00
parent baee86a2d6
commit e45bc4c619
3 changed files with 14 additions and 27 deletions

View File

@ -32,7 +32,7 @@ from msgspec import field
# from PyQt5 import QtGui # from PyQt5 import QtGui
# from PyQt5.QtCore import QLineF, QPointF # from PyQt5.QtCore import QLineF, QPointF
from ..data._sharedmem import ( from ._sharedmem import (
ShmArray, ShmArray,
) )
# from .._profile import pg_profile_enabled, ms_slower_then # from .._profile import pg_profile_enabled, ms_slower_then
@ -42,26 +42,11 @@ from ._compression import (
if TYPE_CHECKING: if TYPE_CHECKING:
from ._render import ( from ._render import (
Renderer,
Viz, Viz,
) )
from .._profile import Profiler from .._profile import Profiler
def by_index_and_key(
renderer: Renderer,
array: np.ndarray,
array_key: str,
vr: tuple[int, int],
) -> tuple[
np.ndarray,
np.ndarray,
np.ndarray,
]:
return array['index'], array[array_key], 'all'
class IncrementalFormatter(msgspec.Struct): class IncrementalFormatter(msgspec.Struct):
''' '''
Incrementally updating, pre-path-graphics tracking, formatter. Incrementally updating, pre-path-graphics tracking, formatter.
@ -74,6 +59,7 @@ class IncrementalFormatter(msgspec.Struct):
''' '''
shm: ShmArray shm: ShmArray
viz: Viz viz: Viz
index_field: str = 'index'
# last read from shm (usually due to an update call) # last read from shm (usually due to an update call)
_last_read: tuple[ _last_read: tuple[
@ -407,7 +393,6 @@ class IncrementalFormatter(msgspec.Struct):
self, self,
src_shm: ShmArray, src_shm: ShmArray,
data_field: str, data_field: str,
index_field: str = 'index',
) -> tuple[ ) -> tuple[
np.ndarray, # x np.ndarray, # x
@ -421,7 +406,7 @@ class IncrementalFormatter(msgspec.Struct):
''' '''
y_nd = src_shm._array[data_field].copy() y_nd = src_shm._array[data_field].copy()
x_nd = src_shm._array[index_field].copy() x_nd = src_shm._array[self.index_field].copy()
return x_nd, y_nd return x_nd, y_nd
# XXX: was ``.update_xy()`` # XXX: was ``.update_xy()``
@ -478,7 +463,7 @@ class IncrementalFormatter(msgspec.Struct):
''' '''
return ( return (
array['index'], array[self.index_field],
array[array_key], array[array_key],
# 1d connection array or style-key to # 1d connection array or style-key to
@ -512,7 +497,7 @@ class OHLCBarsFmtr(IncrementalFormatter):
# generate an flat-interpolated x-domain # generate an flat-interpolated x-domain
x_nd = ( x_nd = (
np.broadcast_to( np.broadcast_to(
ohlc_shm._array['index'][:, None], ohlc_shm._array[self.index_field][:, None],
( (
ohlc_shm._array.size, ohlc_shm._array.size,
# 4, # only ohlc # 4, # only ohlc
@ -543,6 +528,7 @@ class OHLCBarsFmtr(IncrementalFormatter):
data: np.ndarray, data: np.ndarray,
start: int64, start: int64,
bar_gap: float64 = 0.43, bar_gap: float64 = 0.43,
index_field: str = 'index',
) -> tuple[ ) -> tuple[
np.ndarray, np.ndarray,
@ -574,7 +560,7 @@ class OHLCBarsFmtr(IncrementalFormatter):
high = q['high'] high = q['high']
low = q['low'] low = q['low']
close = q['close'] close = q['close']
index = float64(q['index']) index = float64(q[index_field])
istart = i * 6 istart = i * 6
istop = istart + 6 istop = istart + 6
@ -631,6 +617,7 @@ class OHLCBarsFmtr(IncrementalFormatter):
array, array,
start, start,
bar_gap=w, bar_gap=w,
index_field=self.index_field,
) )
return x, y, c return x, y, c
@ -723,7 +710,7 @@ class StepCurveFmtr(IncrementalFormatter):
for use by path graphics generation. for use by path graphics generation.
''' '''
i = shm._array['index'].copy() i = shm._array[self.index_field].copy()
out = shm._array[data_field].copy() out = shm._array[data_field].copy()
x_out = np.broadcast_to( x_out = np.broadcast_to(

View File

@ -37,17 +37,17 @@ from ..data._sharedmem import (
ShmArray, ShmArray,
) )
from ..data.feed import Flume from ..data.feed import Flume
from .._profile import ( from ..data._pathops import (
pg_profile_enabled,
# ms_slower_then,
)
from ._pathops import (
IncrementalFormatter, IncrementalFormatter,
OHLCBarsFmtr, # Plain OHLC renderer OHLCBarsFmtr, # Plain OHLC renderer
OHLCBarsAsCurveFmtr, # OHLC converted to line OHLCBarsAsCurveFmtr, # OHLC converted to line
StepCurveFmtr, # "step" curve (like for vlm) StepCurveFmtr, # "step" curve (like for vlm)
xy_downsample, xy_downsample,
) )
from .._profile import (
pg_profile_enabled,
# ms_slower_then,
)
from ._ohlc import ( from ._ohlc import (
BarItems, BarItems,
# bar_from_ohlc_row, # bar_from_ohlc_row,