HDF5#

HDF5 files have no fixed layout, so you read the arrays you need with h5py and upload them as a table. Each array other than the timestamps becomes a channel.

Before you start#

Install h5py:

pip install h5py

Upload a file#

From Python, read the arrays into a pandas DataFrame and upload it:

from datetime import datetime, timezone

import h5py
import pandas as pd

from nominal import ts
from nominal.core import NominalClient
from nominal.thirdparty.pandas import upload_dataframe_to_dataset

client = NominalClient.from_profile("default")
dataset = client.create_dataset("IMU from HDF5")
started = datetime(2026, 1, 1, 12, 0, tzinfo=timezone.utc)

with h5py.File("imu.h5") as f:
    imu = f["sensors/imu"]
    names = ["time_s", "accel_x", "accel_y"]
    df = pd.DataFrame({name: imu[name][:] for name in names})

upload_dataframe_to_dataset(
    dataset,
    df,
    timestamp_column="time_s",
    timestamp_type=ts.Relative("seconds", start=started),
)

For a file larger than memory, read and upload it in slices, as in Upload in batches. To find the arrays in a file, see Inspect the file.