D
DreamLake

Data

vector

Multi-channel numeric time-series with variable width. Generic dtype for any N-channel signal that doesn't have a specialized dtype (IMU, pose, joint_angles) already.

Chunk format

  • Format: jsonl
  • Decoder: jsonlDecoder

JSONL shape

{
  ts: number
  data: number[]  // length N — same N across every sample in the track
}
FieldTypeRequiredNotes
tsnumberyesMonotonically increasing.
datanumber[]yesLength-N vector. All samples in the track share the same N.

Sample data

{"ts": 0.00, "data": [0.11, 0.22, 0.33]}
{"ts": 0.01, "data": [0.12, 0.23, 0.34]}
{"ts": 0.02, "data": [0.13, 0.24, 0.35]}

Sample m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXTINF:5.000,
chunk-001.jsonl
#EXT-X-ENDLIST

Compatible timeline lanes

LaneNotes
LineChartLaneDefault. Draws one curve per channel (golden-angle hues).

Compatible standalone views

ViewNotes
BarTrackViewGeneric N-channel bar display.

Default props

None. Per-track you'll often want to supply shape: [N], channelNames, and/or range:

{
  "id": "force",
  "path": "sensors/force_xyz",
  "dtype": "vector",
  "src": "...",
  "props": {
    "shape": [3],
    "channelNames": ["Fx", "Fy", "Fz"],
    "range": [-50, 50],
    "unit": "N"
  }
}

Python generator

import numpy as np
from dreamlake import Episode
 
ep = Episode.create("ep1")
force = ep.track("sensors/force_xyz", dtype="vector")
 
t = 0.0
while t < 10.0:
    fx, fy, fz = np.random.normal(0, 5, size=3)
    force.append({"ts": t, "data": [float(fx), float(fy), float(fz)]})
    t += 0.02