code: def unified_genotyper(align_bams, items, ref_file, assoc_files,
                         region=None, out_file=None):
      
      if out_file is None:
          out_file = "%s-variants.vcf.gz" % utils.splitext_plus(align_bams[0])[0]
      if not utils.file_exists(out_file):
          broad_runner, params = \
              _shared_gatk_call_prep(align_bams, items, ref_file, region, out_file)
          with file_transaction(items[0], out_file) as tx_out_file:
              params += ["-T", "UnifiedGenotyper",
                         "-o", tx_out_file,
                         "-ploidy", (str(ploidy.get_ploidy(items, region))
                                     if broad_runner.gatk_type() == "restricted" else "2"),
                         "--genotype_likelihoods_model", "BOTH"]
              resources = config_utils.get_resources("gatk", items[0]["config"])
              if "options" in resources:
                  params += [str(x) for x in resources.get("options", [])]
              broad_runner.run_gatk(params)
      return vcfutils.bgzip_and_index(out_file, items[0]["config"])
docs: Perform SNP genotyping on the given alignment file.