class_docstr: Class for selecting optimal data processing strategies based on type of data.
  Available data sources are:
      * numpy array
      * pandas DataFrame
      * string (path to csv file)
      * InputData (FEDOT dataclass)
  
  Data preprocessing such a class performing also
class_docstr_tok: ["Class","for","selecting","optimal","data","processing","strategies","based","on","type","of","data",".","Available","data","sources","are",":","*","numpy","array","*","pandas","DataFrame","*","string","(","path","to","csv","file",")","*","InputData","(","FEDOT","dataclass",")","Data","preprocessing","such","a","class","performing","also"]
code: def transform(
      self, test_data: InputData, current_pipeline
  ) -> InputData:
      start_time = datetime.now()
      self.log.message("Preprocessing data")
      memory_usage = convert_memory_size(sys.getsizeof(test_data))
      features_shape = test_data.features.shape
      target_shape = test_data.target.shape
      self.log.message(
          f"Test Data (Original) Memory Usage: {memory_usage} Data Shapes: {features_shape, target_shape}"
      )
  
      test_data = self.preprocessor.obligatory_prepare_for_predict(
          data=test_data
      )
      test_data = self.preprocessor.optional_prepare_for_predict(
          pipeline=current_pipeline, data=test_data
      )
      test_data = self.preprocessor.convert_indexes_for_predict(
          pipeline=current_pipeline, data=test_data
      )
      test_data = self.preprocessor.update_indices_for_time_series(
          test_data
      )
      test_data.supplementary_data.is_auto_preprocessed = True
  
      memory_usage = convert_memory_size(sys.getsizeof(test_data))
      features_shape = test_data.features.shape
      target_shape = test_data.target.shape
      self.log.message(
          f"Test Data (Processed) Memory Usage: {memory_usage} Data Shape: {features_shape, target_shape}"
      )
      self.log.message(
          f"Data preprocessing runtime = {datetime.now() - start_time}"
      )
  
      return test_data
  
imports: import sys
  from datetime import datetime
  from typing import Dict, Union
  from typing import Optional
  import numpy
  from golem.core.log import default_log
  from fedot.api.api_utils.data_definition import data_strategy_selector, FeaturesType, TargetType
  from fedot.core.data.data import InputData, OutputData, data_type_is_table
  from fedot.core.data.data_preprocessing import convert_into_column
  from fedot.core.data.multi_modal import MultiModalData
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, convert_forecast_to_output
  from fedot.core.repository.tasks import Task, TaskTypesEnum
  from fedot.core.utils import convert_memory_size
  from fedot.preprocessing.dummy_preprocessing import DummyPreprocessor
  from fedot.preprocessing.preprocessing import DataPreprocessor
label_desc: Use image node_id 7 for calling the ApiDataProcessor obj's underlying member method code with example usage: obj.transform(test_data, current_pipeline) and returns: test_data