code: def pipeline_summary(data):
      
      data = utils.to_single_data(data)
      work_bam = dd.get_align_bam(data) or dd.get_work_bam(data)
      if not work_bam or not work_bam.endswith(".bam"):
          work_bam = None
      if dd.get_ref_file(data):
          if work_bam or (tz.get_in(["config", "algorithm", "kraken"], data)):  # kraken doesn't need bam
              logger.info("QC: %s %s" % (dd.get_sample_name(data), ", ".join(dd.get_algorithm_qc(data))))
              work_data = cwlutils.unpack_tarballs(utils.deepish_copy(data), data)
              data["summary"] = _run_qc_tools(work_bam, work_data)
              if (len(dd.get_algorithm_qc(data)) == 1 and "output_cwl_keys" in data):
                  data["summary"]["qc"] = data["summary"]["qc"].get(dd.get_algorithm_qc(data)[0])
      return [[data]]
docs: Provide summary information on processing sample.
  
      Handles standard and CWL (single QC output) cases.