class_docstr: Calculates the values of a set of features for given instance ids.
code: def _calculate_transform_features(
      self,
      features,
      frame,
      _df_trie,
      progress_callback,
  ):
      frame_empty = (
          frame.empty if isinstance(frame, pd.DataFrame) else False
      )
      feature_values = []
      for f in features:
          # handle when no data
          if frame_empty:
              # Even though we are adding the default values here, when these new
              # features are added to the dataframe in update_feature_columns, they
              # are added as empty columns since the dataframe itself is empty.
              feature_values.append(
                  (
                      f,
                      [
                          f.default_value
                          for _ in range(f.number_output_features)
                      ],
                  ),
              )
              progress_callback(1 / float(self.num_features))
              continue
  
          # collect only the columns we need for this transformation
  
          column_data = [frame[bf.get_name()] for bf in f.base_features]
  
          feature_func = f.get_function()
          # apply the function to the relevant dataframe slice and add the
          # feature row to the results dataframe.
          if f.primitive.uses_calc_time:
              values = feature_func(*column_data, time=self.time_last)
          else:
              values = feature_func(*column_data)
  
          # if we don't get just the values, the assignment breaks when indexes don't match
          if f.number_output_features > 1:
              values = [
                  strip_values_if_series(value) for value in values
              ]
          else:
              values = [strip_values_if_series(values)]
  
          feature_values.append((f, values))
  
          progress_callback(1 / float(self.num_features))
  
      frame = update_feature_columns(feature_values, frame)
      return frame
  
imports: from datetime import datetime
  from functools import partial
  import numpy
  import pandas
  import pandas.api.types
  from featuretools.entityset.relationship import RelationshipPath
  from featuretools.exceptions import UnknownFeature
  from featuretools.feature_base import AggregationFeature, DirectFeature, GroupByTransformFeature, IdentityFeature, TransformFeature
  from featuretools.utils import Trie
  from featuretools.utils.gen_utils import Library, get_relationship_column_id, import_or_none, is_instance
label_desc: Use image node_id 9 for calling the FeatureSetCalculator obj's underlying member method code with example usage: obj._calculate_transform_features(features, frame, _df_trie, progress_callback) and returns: frame