class_docstr: Class for presets processing. Preset is a set of operations (data operations
  and models), which will be used during pipeline structure search
class_docstr_tok: ["Class","for","presets","processing",".","Preset","is","a","set","of","operations","(","data","operations","and","models",")",",","which","will","be","used","during","pipeline","structure","search"]
docstr: Filter operations by preset, remove "heavy" operations and save
  appropriate ones
docstr_tok: ["Filter","operations","by","preset",",","remove","``","heavy","''","operations","and","save","appropriate","ones"]
code: def filter_operations_by_preset(
      self, data_type: Optional[DataTypesEnum] = None
  ):
      """Filter operations by preset, remove "heavy" operations and save
      appropriate ones
      """
      preset_name = self.preset_name
      if AUTO_PRESET_NAME in preset_name:
          available_operations = get_operations_for_task(
              self.task, data_type, mode="all"
          )
          return available_operations
  
      # TODO remove workaround
      # Use best_quality preset but exclude several operations
      if "stable" in self.preset_name:
          # Use best_quality preset but exclude several operations
          preset_name = BEST_QUALITY_PRESET_NAME
      excluded = [
          "mlp",
          "svc",
          "svr",
          "arima",
          "exog_ts",
          "text_clean",
          "lda",
          "qda",
          "lgbm",
          "one_hot_encoding",
          "resample",
          "stl_arima",
      ]
      excluded_tree = ["xgboost", "xgbreg"]
  
      if "*" in preset_name:
          self.modification_using = True
          # The modification has been added
          preset_name, modification = preset_name.split("*")
          modification = "".join(("*", modification))
  
          mod_operations = get_operations_for_task(
              self.task, data_type, mode="all", preset=modification
          )
  
      # Get operations
      available_operations = get_operations_for_task(
          self.task, data_type, mode="all", preset=preset_name
      )
  
      if self.modification_using:
          # Find subsample of operations
          filtered_operations = set(available_operations).intersection(
              set(mod_operations)
          )
          available_operations = list(filtered_operations)
  
      # Exclude "heavy" operations if necessary
      if "stable" in self.preset_name:
          available_operations = self.new_operations_without_heavy(
              excluded, available_operations
          )
  
      if "gpu" in self.preset_name:
          repository = OperationTypesRepository().assign_repo(
              "model", "gpu_models_repository.json"
          )
          available_operations = repository.suitable_operation(
              task_type=self.task.task_type, data_type=data_type
          )
  
      filtered_operations = set(available_operations).difference(
          set(excluded_tree)
      )
      available_operations = list(filtered_operations)
  
      return sorted(available_operations)
  
file_path: FEDOT/fedot/api/api_utils/presets.py
imports: from copy import copy
  from typing import Optional
  from fedot.api.time import ApiTime
  from fedot.core.constants import BEST_QUALITY_PRESET_NAME, FAST_TRAIN_PRESET_NAME, AUTO_PRESET_NAME
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.core.repository.operation_types_repository import OperationTypesRepository, get_operations_for_task
  from fedot.core.repository.tasks import Task
label_desc: Use image node_id 3 for calling the OperationsPreset obj's underlying member method code with example usage: obj.filter_operations_by_preset(data_type) and returns: sorted, available_operations