Source code for wormpose.dataset.loaders.hdf5features

"""
Simple FeaturesDataset implementation that reads features from a HDF5 file
"""

import os
from typing import List

import h5py
from glob import glob

from wormpose.dataset.base_dataset import BaseFeaturesDataset
from wormpose.pose.centerline import get_joint_indexes


[docs]class HDF5Features(BaseFeaturesDataset): def __init__(self, dataset_path: str, video_names: List[str]): features_file = glob(os.path.join(dataset_path, "*.h*5")) if len(features_file) == 0: raise FileNotFoundError(f"Can't load features, missing .h5 file in {dataset_path}") with h5py.File(features_file[0], "r") as f: width = f["width"][:] skeletons = f["skeletons"][:] framerate = f.attrs["framerate"] head_joint, mid_body_joint, tail_body_joint = get_joint_indexes(len(width[0])) features_dict = { "skeletons": skeletons, "head_width": width[:, head_joint], "midbody_width": width[:, mid_body_joint], "tail_width": width[:, tail_body_joint], "frame_rate": framerate, } self._features = {video_names[0]: features_dict}
[docs] def get_features(self, video_name: str): return self._features[video_name]