code: def _prepare_filtered_error_analysis_data(
      self, features, filters, composite_filters, metric
  ):
      filtered_data_df = self._analysis.get_filtered_test_data(
          filters=filters,
          composite_filters=composite_filters,
          include_original_columns_only=False,
      )
  
      msg = "Feature {} not found in dataset. Existing features: {}"
      for feature in features:
          if feature is None:
              continue
          if feature not in filtered_data_df.columns:
              raise UserConfigValidationException(
                  msg.format(feature, filtered_data_df.columns)
              )
  
      self._error_analyzer.update_metric(metric)
      return filtered_data_df
  
imports: import traceback
  from typing import List, Optional
  import numpy
  import pandas
  from erroranalysis._internal.constants import display_name_to_metric
  from raiutils.cohort import Cohort, CohortFilter, CohortFilterMethods
  from raiutils.data_processing import convert_to_list, serialize_json_safe
  from raiutils.exceptions import UserConfigValidationException
  from raiutils.models import ModelTask, is_classifier
  from raiwidgets.constants import ErrorMessages
  from raiwidgets.error_handling import _format_exception
  from raiwidgets.interfaces import WidgetRequestResponseConstants
  from responsibleai import RAIInsights
  from responsibleai._internal.constants import ManagerNames
label_desc: Use image node_id 5 for calling the ResponsibleAIDashboardInput obj's underlying member method code with example usage: obj._prepare_filtered_error_analysis_data(features, filters, composite_filters, metric) and returns: filtered_data_df