docs: def run_multisample_qualimap(output_dir, work_dir, samples, targqc_full_report):
      """ 1. Generates Qualimap2 plots and put into plots_dirpath
          2. Adds records to targqc_full_report.plots
      """
      plots_dirpath = join(output_dir, 'plots')
      individual_report_fpaths = [s.qualimap_html_fpath for s in samples]
      if isdir(plots_dirpath) and not any(
              not can_reuse(join(plots_dirpath, f), individual_report_fpaths)
              for f in listdir(plots_dirpath) if not f.startswith('.')):
          debug('Qualimap miltisample plots exist - ' + plots_dirpath + ', reusing...')
      else:
          # Qualimap2 run for multi-sample plots
          if len([s.qualimap_html_fpath for s in samples if s.qualimap_html_fpath]) > 0:
              if find_executable() is not None:  # and get_qualimap_type(find_executable()) == 'full':
                  qualimap_output_dir = join(work_dir, 'qualimap_multi_bamqc')
  
                  _correct_qualimap_genome_results(samples)
                  _correct_qualimap_insert_size_histogram(samples)
  
                  safe_mkdir(qualimap_output_dir)
                  rows = []
                  for sample in samples:
                      if sample.qualimap_html_fpath:
                          rows += [[sample.name, sample.qualimap_html_fpath]]
  
                  data_fpath = write_tsv_rows(([], rows), join(qualimap_output_dir, 'qualimap_results_by_sample.tsv'))
                  qualimap_plots_dirpath = join(qualimap_output_dir, 'images_multisampleBamQcReport')
                  cmdline = find_executable() + ' multi-bamqc --data {data_fpath} -outdir {qualimap_output_dir}'.format(**locals())
                  run(cmdline, env_vars=dict(DISPLAY=None),
                      checks=[lambda _1, _2: verify_dir(qualimap_output_dir)], reuse=cfg.reuse_intermediate)
  
                  if not verify_dir(qualimap_plots_dirpath):
                      warn('Warning: Qualimap for multi-sample analysis failed to finish. TargQC will not contain plots.')
                      return None
                  else:
                      if exists(plots_dirpath):
                          shutil.rmtree(plots_dirpath)
                      shutil.move(qualimap_plots_dirpath, plots_dirpath)
              else:
                  warn('Warning: Qualimap for multi-sample analysis was not found. TargQC will not contain plots.')
                  return None
  
      targqc_full_report.plots = []
      for plot_fpath in listdir(plots_dirpath):
          plot_fpath = join(plots_dirpath, plot_fpath)
          if verify_file(plot_fpath) and plot_fpath.endswith('.png'):
              targqc_full_report.plots.append(relpath(plot_fpath, output_dir))