code: def _generate_metrics(bam_fname, config_file, ref_file,
                        bait_file, target_file):
      
      with open(config_file) as in_handle:
          config = yaml.safe_load(in_handle)
      broad_runner = broad.runner_from_config(config)
      bam_fname = os.path.abspath(bam_fname)
      path = os.path.dirname(bam_fname)
      out_dir = os.path.join(path, "metrics")
      utils.safe_makedir(out_dir)
      with utils.chdir(out_dir):
          with tx_tmpdir() as tmp_dir:
              cur_bam = os.path.basename(bam_fname)
              if not os.path.exists(cur_bam):
                  os.symlink(bam_fname, cur_bam)
              gen_metrics = PicardMetrics(broad_runner, tmp_dir)
              gen_metrics.report(cur_bam, ref_file,
                                 _bam_is_paired(bam_fname),
                                 bait_file, target_file)
      return out_dir
docs: Run Picard commands to generate metrics files when missing.