def get_signature_def_by_key(meta_graph_def, signature_def_key):
  """Utility function to get a SignatureDef protocol buffer by its key.

  Args:
    meta_graph_def: MetaGraphDef protocol buffer with the SignatureDefMap to
      look up.
    signature_def_key: Key of the SignatureDef protocol buffer to find in the
      SignatureDefMap.

  Returns:
    A SignatureDef protocol buffer corresponding to the supplied key, if it
    exists.

  Raises:
    ValueError: If no entry corresponding to the supplied key is found in the
    SignatureDefMap of the MetaGraphDef.
  """
  if signature_def_key not in meta_graph_def.signature_def:
    raise ValueError("No SignatureDef with key '%s' found in MetaGraphDef." %
                     signature_def_key)
  return meta_graph_def.signature_def[signature_def_key]