class_docstr: Module divides a histogram along first axis encountered, eg. time.
  
  For example, split histogram time:x:y along time axis.
  This will produce a data-frame summarizing the split information,
  where time is the index and each row is a x:y histogram.
code: def transform(self, data: dict) -> dict:
      self.logger.info(
          f'Splitting histograms "{self.read_key}" as "{self.store_key}"'
      )
  
      # determine all possible features, used for comparison below
      features = self.get_features(list(data.keys()))
  
      # if so requested split selected histograms along first axis, and then divide
      divided = {}
      for feature in features[:]:
          self.logger.debug(f'Now splitting histogram "{feature}"')
          hist = get_histogram(data[feature])
          if hist.n_dim <= 1:
              self.logger.debug(
                  f'Histogram "{feature}" does not have two or more dimensions, nothing to split; skipping.'
              )
              continue
  
          cols = feature.split(":")
          if len(cols) != hist.n_dim:
              self.logger.error(
                  f'Dimension of histogram "{feature}" not consistent: {hist.n_dim} vs {len(cols)}; skipping.'
              )
              continue
  
          xname, yname = cols[0], ":".join(
              cols[1:]
          )  # 'time:x:y' -> 'time', 'x:y'
          if yname in divided:
              self.logger.debug(
                  f'Histogram "{yname}" already divided; skipping.'
              )
              continue
  
          # if requested split selected histograms along first axis. e.g. time:x:y is split along time
          # then check if sub-hists of x:y can be further projected. eg. x:y is projected on x and y as well.
          # datatype properties
          is_ts = is_timestamp(hist) or xname in self.var_timestamp
          split = split_hist_along_first_dimension(
              hist=hist,
              short_keys=self.short_keys,
              convert_time_index=is_ts,
              xname=xname,
              yname=yname,
              filter_empty_split_hists=self.filter_empty_split_hists,
          )
          if not split:
              self.logger.warning(
                  f'Split histogram "{yname}" is empty; skipping.'
              )
              continue
  
          self.update_divided(divided=divided, split=split, yname=yname)
  
      # turn divided dicts into dataframes with index
      divided = {
          k: pd.DataFrame(v).set_index(self.index_col)
          for k, v in divided.items()
      }
      return divided
  
file_path: popmon/popmon/hist/hist_splitter.py
imports: import pandas
  from popmon.base import Module
  from popmon.hist.hist_utils import get_histogram, is_timestamp, split_hist_along_first_dimension
label_desc: Use image node_id 4 for calling the HistSplitter obj's underlying member method code with example usage: obj.transform(data) and returns: divided