class_docstr: Class for managing the user data in nebullvm.
  
  Attributes:
      data_reader(Sequence): Object implementing the __getitem__, the
          __len__ and the __iter__/__next__ APIs. It should read the
          user data and return tuples of tensors for feeding the models.
code: def split(self, split_pct: float, shuffle: bool = False):
      if shuffle:
          idx = np.random.choice(len(self), len(self), replace=False)
      else:
          idx = np.arange(len(self))
  
      n = int(round(len(idx) * split_pct))
  
      if len(self) < MIN_DIM_INPUT_DATA:
          logger.warning(
              f"Not enough data for splitting the DataManager. "
              f"You should provide at least {MIN_DIM_INPUT_DATA} "
              f"data samples to allow a good split between train "
              f"and test sets. Compression, calibration and precision "
              f"checks will use the same data."
          )
          self.train_idxs = idx
          self.test_idxs = idx
      else:
          self.train_idxs = idx[:n]
          self.test_idxs = idx[n:]
  
imports: from typing import Sequence, List, Tuple, Any, Union, Iterable
  import numpy
  from loguru import logger
  from nebullvm.config import MIN_DIM_INPUT_DATA
  from nebullvm.optional_modules.tensorflow import tensorflow
  from nebullvm.optional_modules.torch import torch, Dataset, DataLoader
  from nebullvm.tools.onnx import convert_to_numpy
label_desc: Use image node_id 11 for calling the DataManager obj's underlying member method code with example usage: obj.split(split_pct, shuffle) without return types