code: def somatic_batches(items):
      
      non_somatic = []
      somatic = []
      data_by_batches = defaultdict(list)
      for data in items:
          if not get_paired_phenotype(data):
              non_somatic.append(data)
          else:
              somatic.append(data)
              batches = dd.get_batches(data)
              if batches:
                  for batch in batches:
                      data_by_batches[batch].append(data)
      return data_by_batches.values(), somatic, non_somatic
docs: Group items into somatic calling batches (tumor-only or tumor/normal).
  
      Returns batches, where a data item may be in pairs, and somatic and non_somatic
      (which are the original list of items).