Data Encoding#
This notebook provides a short walkthrough of some of the data encoding features of the sharrow
library.
import numpy as np
import pandas as pd
import xarray as xr
import sharrow as sh
sh.__version__
'2.13.0'
Example Data#
We’ll begin by importing some example data to work with. We’ll be using some test data taken from the MTC example in the ActivitySim project. For this data encoding walkthrough, we’ll focus on the skims containing transportation level of service information for travel around a tiny slice of San Francisco.
We’ll load them as a multi-dimensional xarray.Dataset
— or, more exactly, a
sharrow.Dataset
, which is a subclass from the xarray version that adds some
useful features, including compatability with automatic tools for recoding data.
skims = sh.example_data.get_skims()
skims
<xarray.Dataset> Size: 2MB Dimensions: (otaz: 25, dtaz: 25, time_period: 5) Coordinates: * dtaz (dtaz) int64 200B 1 2 3 4 5 6 7 ... 20 21 22 23 24 25 * otaz (otaz) int64 200B 1 2 3 4 5 6 7 ... 20 21 22 23 24 25 * time_period (time_period) <U2 40B 'EA' 'AM' 'MD' 'PM' 'EV' Data variables: (12/170) DIST (otaz, dtaz) float32 2kB dask.array<chunksize=(25, 25), meta=np.ndarray> DISTBIKE (otaz, dtaz) float32 2kB dask.array<chunksize=(25, 25), meta=np.ndarray> DISTWALK (otaz, dtaz) float32 2kB dask.array<chunksize=(25, 25), meta=np.ndarray> DRV_COM_WLK_BOARDS (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_DDIST (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_DTIM (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> ... ... WLK_TRN_WLK_IVT (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> WLK_TRN_WLK_IWAIT (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> WLK_TRN_WLK_WACC (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> WLK_TRN_WLK_WAUX (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> WLK_TRN_WLK_WEGR (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> WLK_TRN_WLK_XWAIT (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
- otaz: 25
- dtaz: 25
- time_period: 5
- dtaz(dtaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- otaz(otaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- time_period(time_period)<U2'EA' 'AM' 'MD' 'PM' 'EV'
array(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='<U2')
- DIST(otaz, dtaz)float32dask.array<chunksize=(25, 25), meta=np.ndarray>
Array Chunk Bytes 2.44 kiB 2.44 kiB Shape (25, 25) (25, 25) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DISTBIKE(otaz, dtaz)float32dask.array<chunksize=(25, 25), meta=np.ndarray>
Array Chunk Bytes 2.44 kiB 2.44 kiB Shape (25, 25) (25, 25) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DISTWALK(otaz, dtaz)float32dask.array<chunksize=(25, 25), meta=np.ndarray>
Array Chunk Bytes 2.44 kiB 2.44 kiB Shape (25, 25) (25, 25) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_IVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WACC(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WEGR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray
- dtazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='dtaz'))
- otazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='otaz'))
- time_periodPandasIndex
PandasIndex(Index(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='object', name='time_period'))
Because sharrow uses the xarray.Dataset
format to work with data, individual
variables in each Dataset can be encoded in different data types.
For example, automobile travel times can be stored with
high(er) precision floating point numbers, while transit
fares, which vary less and have a narrower range, can be
stored with lower precision. This allows a user to choose
the most efficient encoding for each variable, if desired.
Fixed Point Encoding#
Very often, data (especially skim matrixes like here) can be expressed adequately with far less precicion than a standard 32-bit floating point representation allows. In these cases, it may be beneficial to store this data with “fixed point” encoding, which is also sometimes called scaled integers.
Instead of storing values as 32-bit floating point values, they could be multiplied by a scale factor (e.g., 100) and then converted to 16-bit integers. This uses half the RAM and can still express any value (to two decimal point precision) up to positive or negative 327.68. If the lowest values in that range are never needed, it can also be shifted, moving both the bottom and top limits by a fixed amount. Then, for a particular scale \(\mu\) and shift \(\xi\) (stored in metadata), from any array element \(i\) the implied (original) value \(x\) can quickly be recovered by evaluating \((i / \mu) - \xi\).
Sharrow includes a pair of functions to encode and decode arrays in
this manner. These functions also attach the necessary metadata
to the Dataset objects, so that later when we construct sharrow.Flow
instances, they can decode arrays automatically.
from sharrow.digital_encoding import array_decode, array_encode
The distance data in the skims is a great candidate for fixed point of encoding. We can peek at the top corner of this array:
skims.DIST.values[:2, :3]
array([[0.12, 0.24, 0.44],
[0.37, 0.14, 0.28]], dtype=float32)
The data are all small(ish) values with two decimal point fixed precision, so we can probably efficiently encode this data by scaling by 100. If we’re not sure, we can confirm by checking the range of values, to make sure it fits inside the 16-bit integers we’re hoping to use.
skims.DIST.values.min(), skims.DIST.values.max()
(0.1, 2.7)
That’s a really small range because this is only test data. But even the full-scale MTC skims spanning the entire region don’t contain distances over 300 miles.
We can create a new DataArray and apply fixed point encoding using the
array_encode
function.
distance_encoded = array_encode(skims.DIST, scale=0.01, offset=0)
distance_encoded.values[:2, :3]
array([[12, 24, 44],
[37, 14, 28]], dtype=int16)
We can apply that function for any number of variables in the skims, and create a new Dataset that includes the encoded arrays.
skims_encoded = skims.assign({"DIST": array_encode(skims.DIST, scale=0.01, offset=0)})
To manage the digital encodings across an entire dataset, sharrow implements
a digital_encoding
accessor. You can use it to apply encodings to one or more
variables in a simple fashion.
skims_encoded = skims_encoded.digital_encoding.set(
["DISTWALK", "DISTBIKE"], scale=0.01, offset=0
)
And you can review the encodings for every variable in the dataset like this:
skims_encoded.digital_encoding.info()
{'DIST': {'scale': 0.01, 'offset': 0, 'missing_value': None},
'DISTBIKE': {'scale': 0.01, 'offset': 0, 'missing_value': None},
'DISTWALK': {'scale': 0.01, 'offset': 0, 'missing_value': None}}
To demonstrate that the encoding works transparently with a Flow
,
we can construct a simple flow that extracts the distance and
square of distance for the top corner of values we looked at above.
First we’ll do so for a flow with the original float32 encoded skims.
pairs = pd.DataFrame({"orig": [0, 0, 0, 1, 1, 1], "dest": [0, 1, 2, 0, 1, 2]})
tree = sh.DataTree(
base=pairs,
skims=skims.drop_dims("time_period"),
relationships=(
"base.orig -> skims.otaz",
"base.dest -> skims.dtaz",
),
)
flow = tree.setup_flow({"d1": "DIST", "d2": "DIST**2"})
arr = flow.load()
arr
array([[0.12 , 0.0144 ],
[0.24 , 0.0576 ],
[0.44 , 0.1936 ],
[0.37 , 0.13690001],
[0.14 , 0.0196 ],
[0.28 , 0.0784 ]], dtype=float32)
We can do the same for the encoded skims, and we get exactly the same result, even though the encoded skims use less RAM.
tree_enc = sh.DataTree(
base=pairs,
skims=skims_encoded.drop_dims("time_period"),
relationships=(
"base.orig -> skims.otaz",
"base.dest -> skims.dtaz",
),
)
flow_enc = tree_enc.setup_flow({"d1": "DIST", "d2": "DIST**2"})
arr_enc = flow_enc.load()
arr_enc
array([[0.12 , 0.0144],
[0.24 , 0.0576],
[0.44 , 0.1936],
[0.37 , 0.1369],
[0.14 , 0.0196],
[0.28 , 0.0784]], dtype=float32)
Dictionary Encoding#
For skim matrixes where the universe of all possible cell values can be adequately represented by just 255 unique values, we can use an explicit mapping process called “dictionary encoding”, which works by storing those unique values in a tiny base array. Then, in the main body of the skim data we only store offsets that point to positions in that base array. This reduces the marginal memory footprint of each array cell to just an 8 bit integer, reducing memory requirements by up to 75% for these arrays compared to float32’s. This approach is particularly appropriate for many transit skims, as fares, wait times, and transfers can almost always be reduced to a dictionary encoding with no meaningful information loss.
For example, the 'WLK_LOC_WLK_FAR'
array containing fares
only has four unique values:
np.unique(skims.WLK_LOC_WLK_FAR)
array([ 0., 152., 474., 626.], dtype=float32)
We can see various fares applied at different time periods if we look at the top corner of the array:
skims.WLK_LOC_WLK_FAR.values[:2, :3, :]
array([[[ 0., 0., 0., 0., 0.],
[152., 474., 474., 152., 474.],
[152., 474., 474., 152., 474.]],
[[152., 152., 474., 474., 152.],
[ 0., 0., 0., 0., 0.],
[152., 474., 474., 152., 474.]]], dtype=float32)
Once encoded, the array itself only contains offset pointers (small integers), plus the original values stored in metadata.
wlwfare_enc = array_encode(skims.WLK_LOC_WLK_FAR, bitwidth=8, by_dict=True)
wlwfare_enc.values[:2, :3, :]
array([[[0, 0, 0, 0, 0],
[1, 2, 2, 1, 2],
[1, 2, 2, 1, 2]],
[[1, 1, 2, 2, 1],
[0, 0, 0, 0, 0],
[1, 2, 2, 1, 2]]], dtype=uint8)
wlwfare_enc.attrs["digital_encoding"]["dictionary"]
array([ 0., 152., 474., 626.], dtype=float32)
If we want to recover the original data for analysis (other than in
a Flow, which can decode it automatically), we can use the array_decode
function.
array_decode(wlwfare_enc)
<xarray.DataArray 'WLK_LOC_WLK_FAR' (otaz: 25, dtaz: 25, time_period: 5)> Size: 12kB array([[[ 0., 0., 0., 0., 0.], [152., 474., 474., 152., 474.], [152., 474., 474., 152., 474.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.], [152., 152., 152., 152., 474.]], [[152., 152., 474., 474., 152.], [ 0., 0., 0., 0., 0.], [152., 474., 474., 152., 474.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.]], [[152., 474., 474., 474., 474.], [152., 152., 152., 152., 474.], [ 0., 0., 0., 0., 0.], ..., ... ..., [ 0., 0., 0., 0., 0.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.]], [[152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.], [152., 152., 152., 152., 474.], ..., [152., 152., 152., 152., 152.], [ 0., 0., 0., 0., 0.], [152., 152., 152., 152., 152.]], [[152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [ 0., 0., 0., 0., 0.]]], dtype=float32) Coordinates: * dtaz (dtaz) int64 200B 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 * otaz (otaz) int64 200B 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 * time_period (time_period) <U2 40B 'EA' 'AM' 'MD' 'PM' 'EV'
- otaz: 25
- dtaz: 25
- time_period: 5
- 0.0 0.0 0.0 0.0 0.0 152.0 474.0 ... 152.0 152.0 0.0 0.0 0.0 0.0 0.0
array([[[ 0., 0., 0., 0., 0.], [152., 474., 474., 152., 474.], [152., 474., 474., 152., 474.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.], [152., 152., 152., 152., 474.]], [[152., 152., 474., 474., 152.], [ 0., 0., 0., 0., 0.], [152., 474., 474., 152., 474.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.]], [[152., 474., 474., 474., 474.], [152., 152., 152., 152., 474.], [ 0., 0., 0., 0., 0.], ..., ... ..., [ 0., 0., 0., 0., 0.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.]], [[152., 152., 152., 152., 152.], [152., 152., 152., 152., 474.], [152., 152., 152., 152., 474.], ..., [152., 152., 152., 152., 152.], [ 0., 0., 0., 0., 0.], [152., 152., 152., 152., 152.]], [[152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], ..., [152., 152., 152., 152., 152.], [152., 152., 152., 152., 152.], [ 0., 0., 0., 0., 0.]]], dtype=float32)
- dtaz(dtaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- otaz(otaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- time_period(time_period)<U2'EA' 'AM' 'MD' 'PM' 'EV'
array(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='<U2')
- dtazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='dtaz'))
- otazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='otaz'))
- time_periodPandasIndex
PandasIndex(Index(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='object', name='time_period'))
Joint Dict Encoding#
Dictionary encoding can be expanded to map multiple different variables using the same underlying offsets array. For large datasets with several dimension lengths in the thousands, the offset array may constitute the vast majority of the memory usage, so sharing the same offsets for several variables can result in huge reductions in the memory footprint.
The joint dictionary can be applied using the set
method of the
digital_encoding
accessor, giving a list of the variables to jointly encode:
skims1 = skims.digital_encoding.set(
[
"WLK_LOC_WLK_FAR",
"WLK_EXP_WLK_FAR",
"WLK_HVY_WLK_FAR",
"DRV_LOC_WLK_FAR",
"DRV_HVY_WLK_FAR",
"DRV_EXP_WLK_FAR",
],
joint_dict=True,
)
A unique name is automatically generated for the join when joint_dict
is set
to True
. Alternatively, the user can specify a name to use for the join by
giving a string input as the joint_dict
. Different sets of variables in the
same Dataset can be grouped and encoded jointly, but each group must have a
unique name.
skims1 = skims1.digital_encoding.set(
["DISTBIKE", "DISTWALK"],
joint_dict="jointWB",
)
The resulting dataset adds a variable for each created group, which contains the offsets, and the named variables in the group are replaced with a new one-dimension array with coordinating lengths.
skims1
<xarray.Dataset> Size: 2MB Dimensions: (otaz: 25, dtaz: 25, time_period: 5, joined_0: 40, jointWB: 192) Coordinates: * dtaz (dtaz) int64 200B 1 2 3 4 5 6 7 ... 20 21 22 23 24 25 * otaz (otaz) int64 200B 1 2 3 4 5 6 7 ... 20 21 22 23 24 25 * time_period (time_period) <U2 40B 'EA' 'AM' 'MD' 'PM' 'EV' Dimensions without coordinates: joined_0, jointWB Data variables: (12/172) DIST (otaz, dtaz) float32 2kB dask.array<chunksize=(25, 25), meta=np.ndarray> DRV_COM_WLK_BOARDS (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_DDIST (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_DTIM (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_FAR (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> DRV_COM_WLK_IWAIT (otaz, dtaz, time_period) float32 12kB dask.array<chunksize=(25, 25, 5), meta=np.ndarray> ... ... DRV_LOC_WLK_FAR (joined_0) float32 160B 0.0 152.0 ... 152.0 474.0 DRV_HVY_WLK_FAR (joined_0) float32 160B 0.0 206.0 ... 220.0 220.0 DRV_EXP_WLK_FAR (joined_0) float32 160B 0.0 139.0 ... 244.0 244.0 jointWB_offsets (otaz, dtaz) uint8 625B 112 107 135 103 ... 68 113 137 DISTBIKE (jointWB) float32 768B 0.5 2.25 0.75 ... 1.72 1.97 DISTWALK (jointWB) float32 768B 0.5 2.25 0.75 ... 1.72 1.97
- otaz: 25
- dtaz: 25
- time_period: 5
- joined_0: 40
- jointWB: 192
- dtaz(dtaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- otaz(otaz)int641 2 3 4 5 6 7 ... 20 21 22 23 24 25
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
- time_period(time_period)<U2'EA' 'AM' 'MD' 'PM' 'EV'
array(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='<U2')
- DIST(otaz, dtaz)float32dask.array<chunksize=(25, 25), meta=np.ndarray>
Array Chunk Bytes 2.44 kiB 2.44 kiB Shape (25, 25) (25, 25) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_COM_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_EXP_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_HVY_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LOC_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - DRV_LRF_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2TOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV2_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3TOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - HOV3_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOVTOLL_VTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_BTOLL(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_DIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - SOV_TIME(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_COM_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_EXP_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_HVY_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LOC_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_DDIST(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_DTIM(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_DRV_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_BOARDS(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_FAR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_FERRYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_KEYIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_TOTIVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_WAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_LRF_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_IVT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_IWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WACC(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WAUX(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_WEGR(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - WLK_TRN_WLK_XWAIT(otaz, dtaz, time_period)float32dask.array<chunksize=(25, 25, 5), meta=np.ndarray>
Array Chunk Bytes 12.21 kiB 12.21 kiB Shape (25, 25, 5) (25, 25, 5) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - joined_0_offsets(otaz, dtaz, time_period)uint80 0 0 0 0 13 35 ... 17 16 0 0 0 0 0
array([[[ 0, 0, 0, 0, 0], [13, 35, 35, 17, 34], [ 9, 35, 35, 17, 37], ..., [17, 21, 21, 21, 21], [13, 17, 17, 17, 34], [10, 17, 17, 17, 37]], [[16, 16, 34, 34, 16], [ 0, 0, 0, 0, 0], [13, 35, 35, 17, 37], ..., [17, 21, 21, 21, 21], [16, 17, 17, 17, 16], [17, 17, 17, 17, 37]], [[13, 34, 34, 34, 34], [16, 17, 23, 17, 34], [ 0, 0, 0, 0, 0], ..., ... ..., [ 0, 0, 0, 0, 0], [16, 17, 17, 17, 16], [17, 17, 17, 17, 17]], [[16, 16, 16, 16, 16], [13, 17, 17, 17, 36], [13, 17, 17, 17, 37], ..., [17, 21, 21, 21, 21], [ 0, 0, 0, 0, 0], [14, 17, 17, 17, 23]], [[13, 16, 16, 16, 16], [16, 23, 23, 17, 22], [16, 17, 17, 17, 17], ..., [17, 21, 21, 21, 21], [16, 17, 17, 17, 16], [ 0, 0, 0, 0, 0]]], dtype=uint8)
- WLK_LOC_WLK_FAR(joined_0)float320.0 152.0 152.0 ... 626.0 626.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 474., 474., 474., 474., 474., 474., 474., 474., 474., 474., 626., 626.], dtype=float32)
- WLK_EXP_WLK_FAR(joined_0)float320.0 0.0 0.0 ... 474.0 474.0 474.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 474., 474., 474., 0., 152., 152., 152., 152., 152., 474., 474., 474., 474., 474., 474.], dtype=float32)
- WLK_HVY_WLK_FAR(joined_0)float320.0 0.0 0.0 ... 474.0 474.0 474.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 129., 129., 129., 129., 129., 129., 152., 152., 152., 152., 152., 152., 152., 152., 152., 281., 474., 474., 474., 0., 152., 152., 152., 152., 152., 474., 474., 474., 474., 474., 474.], dtype=float32)
- DRV_LOC_WLK_FAR(joined_0)float320.0 152.0 152.0 ... 152.0 474.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 152., 152., 152., 152., 152., 152., 152., 474., 152., 152., 474., 152., 152., 152., 152., 152., 152., 152., 152., 152., 152., 474., 474., 152., 152., 152., 474., 152., 152., 152., 152., 474., 474., 152., 152., 474., 474., 152., 474.], dtype=float32)
- DRV_HVY_WLK_FAR(joined_0)float320.0 206.0 220.0 ... 220.0 220.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 206., 220., 220., 220., 339., 339., 339., 220., 220., 220., 220., 206., 220., 220., 206., 220., 220., 220., 339., 339., 339., 220., 220., 220., 220., 220., 220., 220., 220., 220., 339., 220., 220., 220., 220., 220., 220., 220., 220.], dtype=float32)
- DRV_EXP_WLK_FAR(joined_0)float320.0 139.0 139.0 ... 244.0 244.0
- digital_encoding :
- {'offset_source': 'joined_0_offsets'}
array([ 0., 139., 139., 244., 291., 139., 244., 291., 244., 139., 244., 244., 139., 139., 244., 139., 139., 244., 291., 139., 244., 291., 139., 244., 139., 139., 244., 139., 139., 139., 244., 291., 139., 244., 139., 244., 139., 244., 244., 244.], dtype=float32)
- jointWB_offsets(otaz, dtaz)uint8112 107 135 103 ... 90 68 113 137
array([[112, 107, 135, 103, 90, 180, 53, 41, 20, 28, 167, 147, 77, 60, 182, 90, 166, 76, 139, 153, 48, 90, 149, 56, 59], [124, 31, 34, 174, 45, 33, 130, 18, 188, 62, 143, 98, 32, 172, 129, 173, 54, 55, 64, 126, 84, 98, 40, 124, 45], [ 98, 34, 31, 29, 77, 129, 39, 122, 43, 49, 122, 121, 121, 141, 173, 11, 102, 183, 191, 119, 18, 67, 41, 98, 103], [ 93, 107, 150, 112, 42, 185, 9, 33, 187, 5, 82, 12, 12, 135, 58, 90, 180, 187, 7, 62, 47, 90, 18, 113, 141], [ 39, 9, 138, 162, 157, 172, 162, 115, 131, 143, 185, 98, 172, 17, 53, 4, 123, 74, 86, 151, 90, 84, 55, 10, 166], [180, 33, 129, 39, 135, 161, 93, 165, 73, 92, 47, 10, 130, 149, 5, 75, 14, 110, 111, 102, 74, 144, 111, 26, 17], [ 68, 108, 116, 67, 29, 174, 114, 65, 186, 166, 72, 141, 73, 159, 75, 151, 76, 132, 62, 187, 130, 43, 15, 117, 131], [ 74, 122, 25, 158, 115, 189, 3, 112, 16, 52, 79, 179, 148, 35, 85, 27, 20, 54, 168, 68, 82, 49, 21, 61, 101], [ 62, 49, 94, 123, 143, 130, 179, 16, 89, 150, 129, 41, 27, 76, 7, 63, 57, 188, 18, 58, 74, 37, 1, 111, 28], [152, 133, 183, 151, 101, 101, 53, 17, 56, 46, 56, 131, 117, 176, 95, 163, 87, 85, 59, 50, 148, 120, 140, 136, 184], ... 150, 170, 89, 154, 149, 163, 62, 108, 131, 54, 73, 13], [122, 167, 151, 122, 175, 163, 118, 95, 127, 87, 160, 10, 100, 59, 59, 129, 174, 172, 35, 6, 92, 94, 20, 36, 7], [133, 118, 168, 132, 101, 70, 85, 167, 6, 27, 59, 40, 167, 27, 145, 84, 172, 142, 58, 4, 185, 105, 80, 184, 21], [ 97, 191, 44, 15, 169, 104, 125, 69, 167, 166, 53, 188, 177, 37, 171, 95, 35, 58, 174, 129, 25, 81, 156, 88, 22], [184, 169, 20, 183, 13, 144, 167, 91, 17, 170, 9, 167, 19, 70, 190, 132, 62, 122, 23, 24, 172, 171, 155, 37, 87], [167, 149, 4, 130, 141, 159, 148, 106, 84, 25, 77, 98, 67, 180, 109, 106, 91, 98, 91, 100, 24, 133, 105, 151, 183], [174, 98, 67, 147, 91, 132, 187, 43, 78, 87, 36, 148, 90, 56, 154, 59, 167, 78, 140, 171, 110, 114, 10, 12, 47], [ 40, 180, 41, 101, 176, 51, 119, 37, 99, 8, 164, 168, 109, 4, 17, 36, 20, 80, 156, 38, 44, 58, 66, 58, 11], [ 90, 162, 98, 172, 130, 159, 48, 160, 136, 146, 85, 186, 116, 130, 166, 101, 6, 7, 99, 128, 168, 58, 185, 157, 0], [ 52, 77, 103, 129, 185, 17, 186, 41, 20, 86, 41, 148, 148, 166, 122, 181, 20, 163, 178, 96, 187, 90, 68, 113, 137]], dtype=uint8)
- DISTBIKE(jointWB)float320.5 2.25 0.75 ... 0.43 1.72 1.97
- digital_encoding :
- {'offset_source': 'jointWB_offsets'}
array([0.5 , 2.25, 0.75, 0.25, 1. , 1.25, 1.5 , 1.75, 2.31, 0.64, 0.89, 1.03, 0.32, 1.28, 1.53, 1.78, 0.53, 0.78, 1.06, 1.31, 1.56, 1.81, 2.18, 0.67, 0.23, 0.92, 1.09, 1.34, 1.59, 0.46, 1.84, 0.14, 0.56, 0.81, 0.28, 1.12, 1.37, 1.87, 2.55, 0.7 , 0.95, 1.15, 0.35, 1.4 , 1.9 , 0.59, 0.21, 0.84, 1.18, 1.43, 0.42, 1.68, 0.73, 0.98, 1.21, 1.46, 0.49, 1.96, 0.62, 0.87, 0.31, 1.24, 1.49, 1.74, 1.99, 0.51, 0.19, 0.76, 1.02, 1.27, 1.52, 1.77, 0.65, 0.9 , 1.05, 1.3 , 1.55, 0.45, 1.8 , 0.54, 2.16, 2.41, 0.79, 0.27, 1.08, 1.33, 1.58, 1.83, 2.22, 0.17, 0.68, 0.93, 1.11, 0.34, 1.36, 1.61, 1.86, 2.03, 0.57, 2.28, 0.82, 1.14, 1.39, 0.41, 1.64, 1.89, 0.71, 0.24, 0.96, 1.17, 1.42, 1.67, 0.12, 0.48, 0.15, 0.6 , 0.85, 1.2 , 1.45, 1.7 , 1.95, 0.74, 0.99, 1.23, 0.37, 1.48, 1.73, 1.98, 2.02, 0.63, 0.88, 1.01, 1.26, 1.51, 0.11, 0.44, 1.76, 0.13, 0.52, 2.08, 2.33, 0.77, 0.26, 1.04, 1.29, 1.54, 1.79, 0.66, 0.91, 1.07, 0.33, 1.32, 1.57, 1.82, 0.55, 2.45, 2.7 , 0.2 , 0.8 , 1.1 , 1.35, 0.1 , 0.4 , 1.6 , 1.85, 0.69, 0.94, 1.13, 1.38, 1.63, 0.47, 2.07, 0.58, 0.83, 0.29, 1.16, 1.41, 1.66, 2.13, 0.72, 0.97, 1.19, 0.36, 1.44, 1.69, 0.61, 0.86, 1.22, 1.47, 0.43, 1.72, 1.97], dtype=float32)
- DISTWALK(jointWB)float320.5 2.25 0.75 ... 0.43 1.72 1.97
- digital_encoding :
- {'offset_source': 'jointWB_offsets'}
array([0.5 , 2.25, 0.75, 0.25, 1. , 1.25, 1.5 , 1.75, 2.31, 0.64, 0.89, 1.03, 0.32, 1.28, 1.53, 1.78, 0.53, 0.78, 1.06, 1.31, 1.56, 1.81, 2.18, 0.67, 0.23, 0.92, 1.09, 1.34, 1.59, 0.46, 1.84, 0.14, 0.56, 0.81, 0.28, 1.12, 1.37, 1.87, 2.55, 0.7 , 0.95, 1.15, 0.35, 1.4 , 1.9 , 0.59, 0.21, 0.84, 1.18, 1.43, 0.42, 1.68, 0.73, 0.98, 1.21, 1.46, 0.49, 1.96, 0.62, 0.87, 0.31, 1.24, 1.49, 1.74, 1.99, 0.51, 0.19, 0.76, 1.02, 1.27, 1.52, 1.77, 0.65, 0.9 , 1.05, 1.3 , 1.55, 0.45, 1.8 , 0.54, 2.16, 2.41, 0.79, 0.27, 1.08, 1.33, 1.58, 1.83, 2.22, 0.17, 0.68, 0.93, 1.11, 0.34, 1.36, 1.61, 1.86, 2.03, 0.57, 2.28, 0.82, 1.14, 1.39, 0.41, 1.64, 1.89, 0.71, 0.24, 0.96, 1.17, 1.42, 1.67, 0.12, 0.48, 0.15, 0.6 , 0.85, 1.2 , 1.45, 1.7 , 1.95, 0.74, 0.99, 1.23, 0.37, 1.48, 1.73, 1.98, 2.02, 0.63, 0.88, 1.01, 1.26, 1.51, 0.11, 0.44, 1.76, 0.13, 0.52, 2.08, 2.33, 0.77, 0.26, 1.04, 1.29, 1.54, 1.79, 0.66, 0.91, 1.07, 0.33, 1.32, 1.57, 1.82, 0.55, 2.45, 2.7 , 0.2 , 0.8 , 1.1 , 1.35, 0.1 , 0.4 , 1.6 , 1.85, 0.69, 0.94, 1.13, 1.38, 1.63, 0.47, 2.07, 0.58, 0.83, 0.29, 1.16, 1.41, 1.66, 2.13, 0.72, 0.97, 1.19, 0.36, 1.44, 1.69, 0.61, 0.86, 1.22, 1.47, 0.43, 1.72, 1.97], dtype=float32)
- dtazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='dtaz'))
- otazPandasIndex
PandasIndex(Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], dtype='int64', name='otaz'))
- time_periodPandasIndex
PandasIndex(Index(['EA', 'AM', 'MD', 'PM', 'EV'], dtype='object', name='time_period'))
Skims encoded in this manner can be fed into sharrow and will compile and return
the same results as if they were not encoded. If you are mixing compiled flows
between encoded and unencoded Datasets (which should be unusual, but for the examples
in this notebook we’ve done it) you’ll need to set the hashing_level
to at least
2, to ensure you are matching the correct numba code with the encodings used in the
data.
tree1 = sh.DataTree(
base=pairs,
skims=skims1,
rskims=skims1,
relationships=(
"base.orig -> skims.otaz",
"base.dest -> skims.dtaz",
"base.orig -> rskims.dtaz",
"base.dest -> rskims.otaz",
),
)
flow1 = tree1.setup_flow(
{
"d1": 'skims["WLK_LOC_WLK_FAR", "AM"]',
"d2": 'skims["WLK_LOC_WLK_FAR", "AM"]**2',
"w1": "skims.DISTWALK",
"w2": 'skims.reverse("DISTWALK")',
"w3": "rskims.DISTWALK",
"x1": "skims.DIST",
"x2": 'skims.reverse("DIST")',
},
hashing_level=2,
)
arr1 = flow1.load_dataframe()
arr1
d1 | d2 | w1 | w2 | w3 | x1 | x2 | |
---|---|---|---|---|---|---|---|
0 | 0.0 | 0.0 | 0.12 | 0.12 | 0.12 | 0.12 | 0.12 |
1 | 474.0 | 224676.0 | 0.24 | 0.37 | 0.37 | 0.24 | 0.37 |
2 | 474.0 | 224676.0 | 0.44 | 0.57 | 0.57 | 0.44 | 0.57 |
3 | 152.0 | 23104.0 | 0.37 | 0.24 | 0.24 | 0.37 | 0.24 |
4 | 0.0 | 0.0 | 0.14 | 0.14 | 0.14 | 0.14 | 0.14 |
5 | 474.0 | 224676.0 | 0.28 | 0.28 | 0.28 | 0.28 | 0.28 |
Pandas Categorical Dtype#
Dictionary encoding is very similar to the approach used for the pandas Categorical dtype, and
can be used to achieve some of the efficiencies of categorical data, even though xarray lacks
a formal native categorical data representation. Sharrow’s construct
function for creating
Dataset objects will automatically use dictionary encoding for “category” data.
To demonstrate, we’ll load some household data and create a categorical data column.
hh = sh.example_data.get_households()
hh["income_grp"] = pd.cut(
hh.income, bins=[-np.inf, 30000, 60000, np.inf], labels=["Low", "Mid", "High"]
)
hh = hh[["income", "income_grp"]]
hh.head()
income | income_grp | |
---|---|---|
HHID | ||
2717868 | 361000 | High |
763899 | 59220 | Mid |
2222791 | 197000 | High |
112477 | 2200 | Low |
370491 | 16500 | Low |
hh.info()
<class 'pandas.core.frame.DataFrame'>
Index: 5000 entries, 2717868 to 702559
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 income 5000 non-null int64
1 income_grp 5000 non-null category
dtypes: category(1), int64(1)
memory usage: 83.1 KB
We’ll then create a Dataset using construct.
hh_dataset = sh.dataset.construct(hh[["income", "income_grp"]])
hh_dataset
<xarray.Dataset> Size: 85kB Dimensions: (HHID: 5000) Coordinates: * HHID (HHID) int64 40kB 2717868 763899 2222791 ... 2049372 702559 Data variables: income (HHID) int64 40kB 361000 59220 197000 2200 ... 0 103000 14800 income_grp (HHID) int8 5kB 2 1 2 0 0 0 0 0 0 2 0 ... 0 0 0 1 1 0 0 0 0 2 0
- HHID: 5000
- HHID(HHID)int642717868 763899 ... 2049372 702559
array([2717868, 763899, 2222791, ..., 2762199, 2049372, 702559])
- income(HHID)int64361000 59220 ... 103000 14800
array([361000, 59220, 197000, ..., 0, 103000, 14800])
- income_grp(HHID)int82 1 2 0 0 0 0 0 ... 1 1 0 0 0 0 2 0
- digital_encoding :
- {'dictionary': array(['Low', 'Mid', 'High'], dtype='<U4'), 'ordered': True}
array([2, 1, 2, ..., 0, 2, 0], dtype=int8)
- HHIDPandasIndex
PandasIndex(Index([2717868, 763899, 2222791, 112477, 370491, 226880, 568499, 27956, 110706, 2307193, ... 112141, 26177, 823184, 983164, 256612, 109218, 570708, 2762199, 2049372, 702559], dtype='int64', name='HHID', length=5000))
Note that the “income” variable remains an integer as expected, but the “income_grp” variable,
which had been a “category” dtype in pandas, is now stored as an int8
, giving the
category index of each element (it would be an int16
or larger if needed, but that’s
not necessary with only 3 categories). The information about the labels for the categories is
retained not in the data itself but in the digital_encoding
:
hh_dataset["income_grp"].digital_encoding
{'dictionary': array(['Low', 'Mid', 'High'], dtype='<U4'), 'ordered': True}
If you try to make the return trip to a pandas DataFrame using the regular
xarray.Dataset.to_pandas()
method, the details of the categorical nature
of this variable are lost, and only the int8 index is available.
hh_dataset.to_pandas()
income | income_grp | |
---|---|---|
HHID | ||
2717868 | 361000 | 2 |
763899 | 59220 | 1 |
2222791 | 197000 | 2 |
112477 | 2200 | 0 |
370491 | 16500 | 0 |
... | ... | ... |
109218 | 15000 | 0 |
570708 | 13100 | 0 |
2762199 | 0 | 0 |
2049372 | 103000 | 2 |
702559 | 14800 | 0 |
5000 rows × 2 columns
But, if you use the single_dim
accessor on the dataset provided by sharrow,
the categorical dtype is restored correctly.
hh_dataset.single_dim.to_pandas()
income | income_grp | |
---|---|---|
HHID | ||
2717868 | 361000 | High |
763899 | 59220 | Mid |
2222791 | 197000 | High |
112477 | 2200 | Low |
370491 | 16500 | Low |
... | ... | ... |
109218 | 15000 | Low |
570708 | 13100 | Low |
2762199 | 0 | Low |
2049372 | 103000 | High |
702559 | 14800 | Low |
5000 rows × 2 columns
Note that this automatic handling of categorical data only applies when constructing
or deconstructing a dataset with a single dimension (i.e. the index
is not a MultiIndex).
Multidimensional datasets use the normal xarray processing, which will dump string
categoricals back into python objects, which is bad news for high performance applications.
sh.dataset.construct(
hh[["income", "income_grp"]].reset_index().set_index(["HHID", "income"])
)
<xarray.Dataset> Size: 38MB Dimensions: (HHID: 5000, income: 951) Coordinates: * HHID (HHID) int64 40kB 25671 25675 25678 ... 2863524 2863552 2863568 * income (income) int64 8kB 0 30 200 230 ... 650000 652070 660000 733000 Data variables: income_grp (HHID, income) object 38MB nan nan nan nan ... nan nan nan nan
- HHID: 5000
- income: 951
- HHID(HHID)int6425671 25675 ... 2863552 2863568
array([ 25671, 25675, 25678, ..., 2863524, 2863552, 2863568])
- income(income)int640 30 200 ... 652070 660000 733000
array([ 0, 30, 200, ..., 652070, 660000, 733000])
- income_grp(HHID, income)objectnan nan nan nan ... nan nan nan nan
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., ['Low', nan, nan, ..., nan, nan, nan], ['Low', nan, nan, ..., nan, nan, nan], ['Low', nan, nan, ..., nan, nan, nan]], dtype=object)
- HHIDPandasIndex
PandasIndex(Index([ 25671, 25675, 25678, 25683, 25684, 25691, 25692, 25704, 25725, 25734, ... 2863454, 2863467, 2863494, 2863496, 2863498, 2863513, 2863520, 2863524, 2863552, 2863568], dtype='int64', name='HHID', length=5000))
- incomePandasIndex
PandasIndex(Index([ 0, 30, 200, 230, 250, 290, 320, 360, 370, 500, ... 432000, 435000, 450000, 457400, 462000, 632600, 650000, 652070, 660000, 733000], dtype='int64', name='income', length=951))