code: def filter_evidence_source(stmts_in, source_apis, policy='one', **kwargs):
      
      logger.info('Filtering %d statements to evidence source "%s" of: %s...' %
                  (len(stmts_in), policy, ', '.join(source_apis)))
      stmts_out = []
      for st in stmts_in:
          sources = set([ev.source_api for ev in st.evidence])
          if policy == 'one':
              if sources.intersection(source_apis):
                  stmts_out.append(st)
          if policy == 'all':
              if sources.intersection(source_apis) == set(source_apis):
                  stmts_out.append(st)
          if policy == 'none':
              if not sources.intersection(source_apis):
                  stmts_out.append(st)
      logger.info('%d statements after filter...' % len(stmts_out))
      dump_pkl = kwargs.get('save')
      if dump_pkl:
          dump_statements(stmts_out, dump_pkl)
      return stmts_out
docs: Filter to statements that have evidence from a given set of sources.
  
      Parameters
      ----------
      stmts_in : list[indra.statements.Statement]
          A list of statements to filter.
      source_apis : list[str]
          A list of sources to filter for. Examples: biopax, bel, reach
      policy : Optional[str]
          If 'one', a statement that hase evidence from any of the sources is
          kept. If 'all', only those statements are kept which have evidence
          from all the input sources specified in source_apis.
          If 'none', only those statements are kept that don't have evidence
          from any of the sources specified in source_apis.
      save : Optional[str]
          The name of a pickle file to save the results (stmts_out) into.
  
      Returns
      -------
      stmts_out : list[indra.statements.Statement]
          A list of filtered statements.