class_docstr: Wrapper for Ego4D IMU data loads, assuming one csv per video_uid at the provided path.
code: def get_imu_sample(
      self, video_uid: str, video_start: float, video_end: float
  ) -> Dict[str, Any]:
      # Assumes video clips are loaded sequentially, will lazy load imu
      if not self.imu_video_uid or video_uid != self.imu_video_uid:
          self.imu_video_uid = video_uid
          self.imu_video_data = self._load_imu(video_uid)
          assert self.imu_video_data
      imu_signal, timestamps, sampling_rate = self.imu_video_data
  
      return self._get_imu_window(
          video_start,
          video_end,
          imu_signal,
          timestamps,
          sampling_rate,
      )
  
imports: import csv
  import json
  import logging
  import os
  from bisect import bisect_left
  from collections import defaultdict
  from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Type
  import numpy
  import torch
  import torch.autograd.profiler
  import torch.utils.data
  import torchaudio
  from iopath.common.file_io import g_pathmgr
  from pytorchvideo.data import LabeledVideoDataset
  from pytorchvideo.data.clip_sampling import ClipSampler
  from pytorchvideo.data.ego4d.utils import Ego4dImuDataBase, get_label_id_map, MomentsClipSampler
  from pytorchvideo.data.utils import get_logger
  from pytorchvideo.data.video import VideoPathHandler
  from pytorchvideo.transforms import ApplyTransformToKey, Div255, Normalize, RandomShortSideScale, ShortSideScale
  from torchvision.transforms import CenterCrop, Compose, RandomCrop, RandomHorizontalFlip
label_desc: Use image node_id 7 for calling the Ego4dImuData obj's underlying member method code with example usage: obj.get_imu_sample(video_uid, video_start, video_end) and returns: self