code: def gather_ingredients_topological(ingredient):
      sub_ingredients = defaultdict(int)
      for sub_ing, depth in ingredient.traverse_ingredients():
          sub_ingredients[sub_ing] = max(
              sub_ingredients[sub_ing], depth
          )
      return sorted(sub_ingredients, key=lambda x: -sub_ingredients[x])
  
imports: import os
  from collections import OrderedDict, defaultdict
  from copy import copy, deepcopy
  from sacred.config import ConfigDict, chain_evaluate_config_scopes, dogmatize, load_config_file, undogmatize
  from sacred.config.config_summary import ConfigSummary
  from sacred.config.custom_containers import make_read_only
  from sacred.host_info import get_host_info
  from sacred.randomness import create_rnd, get_seed
  from sacred.run import Run
  from sacred.utils import convert_to_nested_dict, create_basic_stream_logger, get_by_dotted_path, is_prefix, rel_path, iterate_flattened, set_by_dotted_path, recursive_update, iter_prefixes, join_paths, NamedConfigNotFoundError, ConfigAddedError
  from sacred.settings import SETTINGS
label_desc: Use image node_id 5 for calling a global function with example usage: gather_ingredients_topological(ingredient) and returns: sorted