code: def detect_sv(items, all_items=None, stage="standard"):
      
      items = [utils.to_single_data(x) for x in items]
      items = cwlutils.unpack_tarballs(items, items[0])
      svcaller = items[0]["config"]["algorithm"].get("svcaller")
      caller_fn = _get_callers(items, stage, special_cases=True).get(svcaller)
      out = []
      if svcaller and caller_fn:
          if (all_items and svcaller in _NEEDS_BACKGROUND and
                  not vcfutils.is_paired_analysis([x.get("align_bam") for x in items], items)):
              names = set([dd.get_sample_name(x) for x in items])
              background = [x for x in all_items if dd.get_sample_name(x) not in names]
              for svdata in caller_fn(items, background):
                  out.append([svdata])
          else:
              for svdata in caller_fn(items):
                  out.append([svdata])
      else:
          for data in items:
              out.append([data])
      # Avoid nesting of callers for CWL runs for easier extraction
      if cwlutils.is_cwl_run(items[0]):
          out_cwl = []
          for data in [utils.to_single_data(x) for x in out]:
              # Run validation directly from CWL runs since we're single stage
              data = validate.evaluate(data)
              data["svvalidate"] = {"summary": tz.get_in(["sv-validate", "csv"], data)}
              svs = data.get("sv")
              if svs:
                  assert len(svs) == 1, svs
                  data["sv"] = svs[0]
              else:
                  data["sv"] = {}
              data = _add_supplemental(data)
              out_cwl.append([data])
          return out_cwl
      return out
docs: Top level parallel target for examining structural variation.