code: def run(items, background=None):
      
      if not background: background = []
      names = [tz.get_in(["rgnames", "sample"], x) for x in items + background]
      work_bams = [x["align_bam"] for x in items + background]
      if len(items + background) < 2:
          raise ValueError("cn.mops only works on batches with multiple samples")
      data = items[0]
      work_dir = utils.safe_makedir(os.path.join(data["dirs"]["work"], "structural", names[0],
                                                 "cn_mops"))
      parallel = {"type": "local", "cores": data["config"]["algorithm"].get("num_cores", 1),
                  "progs": ["delly"]}
      with pysam.Samfile(work_bams[0], "rb") as pysam_work_bam:
          chroms = [None] if _get_regional_bed_file(items[0]) else pysam_work_bam.references
          out_files = run_multicore(_run_on_chrom, [(chrom, work_bams, names, work_dir, items)
                                                    for chrom in chroms],
                                    data["config"], parallel)
      out_file = _combine_out_files(out_files, work_dir, data)
      out = []
      for data in items:
          if "sv" not in data:
              data["sv"] = []
          data["sv"].append({"variantcaller": "cn_mops",
                             "vrn_file": _prep_sample_cnvs(out_file, data)})
          out.append(data)
      return out
docs: Detect copy number variations from batched set of samples using cn.mops.