code: def _check_for_problem_somatic_batches(items, config):
      
      to_check = []
      for data in items:
          data = copy.deepcopy(data)
          data["config"] = config_utils.update_w_custom(config, data)
          to_check.append(data)
      data_by_batches = collections.defaultdict(list)
      for data in to_check:
          batches = dd.get_batches(data)
          if batches:
              for batch in batches:
                  data_by_batches[batch].append(data)
      for batch, items in data_by_batches.items():
          if vcfutils.get_paired(items):
              vcfutils.check_paired_problems(items)
          elif len(items) > 1:
              vcs = vcfutils.get_somatic_variantcallers(items)
              if "vardict" in vcs:
                  raise ValueError("VarDict does not support pooled non-tumor/normal calling, in batch %s: %s"
                                   % (batch, [dd.get_sample_name(data) for data in items]))
              elif "mutect" in vcs or "mutect2" in vcs:
                  raise ValueError("MuTect and MuTect2 require a 'phenotype: tumor' sample for calling, "
                                   "in batch %s: %s"
                                   % (batch, [dd.get_sample_name(data) for data in items]))
docs: Identify problem batch setups for somatic calling.
  
      We do not support multiple tumors in a single batch and VarDict(Java) does not
      handle pooled calling, only tumor/normal.