code: def greylisting(data):
      
      input_bam = data.get("work_bam_input", None)
      if not input_bam:
          logger.info("No input BAM file detected, skipping greylisting.")
          return None
      try:
          greylister = config_utils.get_program("chipseq-greylist", data)
      except config_utils.CmdNotFound:
          logger.info("No greylister found, skipping greylisting.")
          return None
      greylistdir = os.path.join(os.path.dirname(input_bam), "greylist")
      if os.path.exists(greylistdir):
          return greylistdir
      cmd = "{greylister} --outdir {txgreylistdir} {input_bam}"
      message = "Running greylisting on %s." % input_bam
      with file_transaction(greylistdir) as txgreylistdir:
          utils.safe_makedir(txgreylistdir)
          try:
              do.run(cmd.format(**locals()), message)
          except subprocess.CalledProcessError as msg:
              if str(msg).find("Cannot take a larger sample than population when 'replace=False'") >= 0:
                  logger.info("Skipping chipseq greylisting because of small sample size: %s"
                              % dd.get_sample_name(data))
                  return None
      return greylistdir
docs: Run ChIP-seq greylisting