code: def ordered(start, edges, predicate=None, inverse=False):
          
          s, o = 'sub', 'obj'
          if inverse:
              s, o = o, s
          for edge in edges:
              if predicate is not None and edge['pred'] != predicate:
                  print('scoop!')
                  continue
  
              if edge[s] == start:
                  yield edge
                  yield from Graph.ordered(edge[o], edges, predicate=predicate)
docs: Depth first edges from a SciGraph response.