code: def find_active_choices(
      matches,
      node,
      node_idx,
      dataset_properties,
      include=None,
      exclude=None,
  ):
      if not hasattr(node, "get_available_components"):
          raise ValueError()
      available_components = node.get_available_components(
          dataset_properties, include=include, exclude=exclude
      )
      assert matches.shape[node_idx] == len(available_components), (
          matches.shape[node_idx],
          len(available_components),
      )
  
      choices = []
      for c_idx, component in enumerate(available_components):
          slices = tuple(
              slice(None)
              if idx != node_idx
              else slice(c_idx, c_idx + 1)
              for idx in range(len(matches.shape))
          )
  
          if np.sum(matches[slices]) > 0:
              choices.append(component)
      return choices
  
imports: import itertools
  import numpy
  from ConfigSpace.forbidden import ForbiddenAndConjunction, ForbiddenEqualsClause
  from autosklearn.pipeline.constants import DENSE, INPUT, PREDICTIONS, SIGNED_DATA, SPARSE, UNSIGNED_DATA
label_desc: Use image node_id 2 for calling a global function with example usage: find_active_choices(matches, node, node_idx, dataset_properties, include, exclude) and returns: choices