code: def denoise(data, pon, work_dir):
      
      std_file = os.path.join(work_dir, "%s-crstandardized.tsv" % dd.get_sample_name(data))
      denoise_file = os.path.join(work_dir, "%s-crdenoised.tsv" % dd.get_sample_name(data))
      if not utils.file_exists(std_file):
          with file_transaction(data, std_file, denoise_file) as (tx_std_file, tx_denoise_file):
              params = ["-T", "DenoiseReadCounts",
                        "-I", tz.get_in(["depth", "bins", "target"], data),
                        "--standardized-copy-ratios", tx_std_file,
                        "--denoised-copy-ratios", tx_denoise_file]
              if pon:
                  params += ["--count-panel-of-normals", pon]
              else:
                  params += ["--annotated-intervals", tz.get_in(["regions", "bins", "gcannotated"], data)]
              _run_with_memory_scaling(params, tx_std_file, data)
      return denoise_file if pon else std_file
docs: Normalize read counts using panel of normal background or GC/mappability