mava_exchange.tracks.ObservationSeries

class mava_exchange.tracks.ObservationSeries(name: str, description: str, dimensions: list[DimensionSpec], sampling_interval: float | None = None)

Dense time-series of numeric observations sampled at regular intervals.

Use for emotion scores, audio volume, confidence values, or any regularly-sampled numeric measurements.

Each row in the Parquet file needs: start_seconds + one column per dimension.

Example:

emotions = ObservationSeries(
    name="emotions",
    description="Face emotion scores from DeepFace",
    sampling_interval=0.5,
    dimensions=[
        DimensionSpec("angry", "Anger probability", "[0,1]"),
        DimensionSpec("fear", "Fear probability", "[0,1]"),
        DimensionSpec("neutral", "Neutral expression", "[0,1]")
    ]
)

df = pd.DataFrame({
    "start_seconds": [0.0, 0.5, 1.0],
    "angry": [0.2, 0.1, 0.3],
    "fear": [0.1, 0.2, 0.1],
    "neutral": [0.7, 0.7, 0.6]
})
__init__(name: str, description: str, dimensions: list[DimensionSpec], sampling_interval: float | None = None) None

Methods

__init__(name, description, dimensions[, ...])

to_dict()

Converts to dictionary for manifest.json.

Attributes

columns

Returns column names.

sampling_interval

Seconds between samples for regularly-sampled data.

type

name

Track name (must be unique within package).

description

Human-readable description of what this track contains.

dimensions

Measured quantities (columns in Parquet).

name: str

Track name (must be unique within package).

description: str

Human-readable description of what this track contains.

dimensions: list[DimensionSpec]

Measured quantities (columns in Parquet).

sampling_interval: float | None = None

Seconds between samples for regularly-sampled data.

type: Literal['mava:ObservationSeries'] = 'mava:ObservationSeries'
property columns: list[str]

Returns column names.

to_dict() dict

Converts to dictionary for manifest.json.