code: def derive_new_data_manager(
      self,
      with_sample_id,
      with_match_id,
      with_label,
      with_weight,
      columns,
  ) -> Tuple["DataManager", List[Tuple[int, int, bool, List]]]:
      (
          schema_manager,
          derive_indexes,
      ) = self._schema_manager.derive_new_schema_manager(
          with_sample_id=with_sample_id,
          with_match_id=with_match_id,
          with_label=with_label,
          with_weight=with_weight,
          columns=columns,
      )
      (
          block_manager,
          blocks_loc,
      ) = self._block_manager.derive_new_block_manager(derive_indexes)
  
      return (
          DataManager(
              schema_manager=schema_manager, block_manager=block_manager
          ),
          blocks_loc,
      )
  
imports: import numpy
  from .schema_manager import SchemaManager
  from .block_manager import BlockManager
  from .block_manager import BlockType
  import pandas
  from ..entity import types
  from typing import Union, List, Tuple
  from ..conf.default_config import DATAFRAME_BLOCK_ROW_SIZE
label_desc: Use image node_id 14 for calling the DataManager obj's underlying member method code with example usage: obj.derive_new_data_manager(with_sample_id, with_match_id, with_label, with_weight, columns) and returns: DataManager,  blocks_loc