code: def get_subordinate_clauses(tiger_docgraph):
      
      subord_clause_rels = \
          dg.select_edges_by_attribute(
              tiger_docgraph, attribute='tiger:label',
              value=['MO', 'RC', 'SB'])
  
      subord_clause_nodes = []
      for src_id, target_id in subord_clause_rels:
          src_cat = tiger_docgraph.node[src_id].get('tiger:cat')
          if src_cat == 'S' and not dg.istoken(tiger_docgraph, target_id):
              subord_clause_nodes.append(target_id)
      return subord_clause_nodes
docs: given a document graph of a TIGER syntax tree, return all
      node IDs of nodes representing subordinate clause constituents.
  
      Parameters
      ----------
      tiger_docgraph : DiscourseDocumentGraph or TigerDocumentGraph
          document graph from which subordinate clauses will be extracted
  
      Returns
      -------
      subord_clause_nodes : list(str)
          list of node IDs of nodes directly dominating subordinate clauses