code: def process_from_file(signor_data_file, signor_complexes_file=None):
      
      # Get generator over the CSV file
      data_iter = read_unicode_csv(signor_data_file, delimiter=';', skiprows=1)
      complexes_iter = None
      if signor_complexes_file:
          complexes_iter = read_unicode_csv(signor_complexes_file, delimiter=';',
                                            skiprows=1)
      else:
          logger.warning('Signor complex mapping file not provided, Statements '
                         'involving complexes will not be expanded to members.')
      return _processor_from_data(data_iter, complexes_iter)
docs: Process Signor interaction data from CSV files.
  
      Parameters
      ----------
      signor_data_file : str
          Path to the Signor interaction data file in CSV format.
      signor_complexes_file : str
          Path to the Signor complexes data in CSV format. If unspecified,
          Signor complexes will not be expanded to their constitutents.
  
      Returns
      -------
      indra.sources.signor.SignorProcessor
          SignorProcessor containing Statements extracted from the Signor data.