code: def save(df, path, data_paths):
          
          size = _reset_df_and_get_size(df)
          buffer = defaultdict(list)
  
          with get_tqdm(total=size) as pbar:
              for dp in df:
                  assert len(dp) == len(data_paths), "Datapoint has {} components!".format(len(dp))
                  for k, el in zip(data_paths, dp):
                      buffer[k].append(el)
                  pbar.update()
  
          with h5py.File(path, 'w') as hf, get_tqdm(total=len(data_paths)) as pbar:
              for data_path in data_paths:
                  hf.create_dataset(data_path, data=buffer[data_path])
                  pbar.update()
docs: Args:
              df (DataFlow): the DataFlow to serialize.
              path (str): output hdf5 file.
              data_paths (list[str]): list of h5 paths. It should have the same
                  length as each datapoint, and each path should correspond to one
                  component of the datapoint.