code: def prep_db_parallel(samples, parallel_fn):
      
      batch_groups, singles, out_retrieve, extras = _group_by_batches(samples, _has_variant_calls)
      to_process = []
      has_batches = False
      for (name, caller), info in batch_groups.items():
          fnames = [x[0] for x in info]
          to_process.append([fnames, (str(name), caller, True), [x[1] for x in info], extras])
          has_batches = True
      for name, caller, data, fname in singles:
          to_process.append([[fname], (str(name), caller, False), [data], extras])
      output = parallel_fn("prep_gemini_db", to_process)
      out_fetch = {}
      for batch_id, out_file in output:
          out_fetch[tuple(batch_id)] = out_file
      out = []
      for batch_name, data in out_retrieve:
          out_variants = []
          for vrn in data["variants"]:
              use_population = vrn.pop("population", True)
              if use_population:
                  vrn["population"] = out_fetch[(batch_name, vrn["variantcaller"])]
              out_variants.append(vrn)
          data["variants"] = out_variants
          out.append([data])
      for x in extras:
          out.append([x])
      return out
docs: Prepares gemini databases in parallel, handling jointly called populations.