code: def process_text(text, pmid=None, cleanup=True, add_grounding=True):
      
      # Create a temporary directory to store the proprocessed input
      pp_dir = tempfile.mkdtemp('indra_isi_pp_output')
  
      pp = IsiPreprocessor(pp_dir)
      extra_annotations = {}
      pp.preprocess_plain_text_string(text, pmid, extra_annotations)
  
      # Run the ISI reader and extract statements
      ip = process_preprocessed(pp)
      if add_grounding:
          ip.add_grounding()
  
      if cleanup:
          # Remove temporary directory with processed input
          shutil.rmtree(pp_dir)
      else:
          logger.info('Not cleaning up %s' % pp_dir)
  
      return ip
docs: Process a string using the ISI reader and extract INDRA statements.
  
      Parameters
      ----------
      text : str
          A text string to process
      pmid : Optional[str]
          The PMID associated with this text (or None if not specified)
      cleanup : Optional[bool]
          If True, the temporary folders created for preprocessed reading input
          and output are removed. Default: True
      add_grounding : Optional[bool]
          If True the extracted Statements' grounding is mapped
  
      Returns
      -------
      ip : indra.sources.isi.processor.IsiProcessor
          A processor containing statements