code: def _run_genotype_gvcfs_gatk3(data, region, vrn_files, ref_file, out_file):
      
      if not utils.file_exists(out_file):
          broad_runner = broad.runner_from_config(data["config"])
          with file_transaction(data, out_file) as tx_out_file:
              assoc_files = tz.get_in(("genome_resources", "variation"), data, {})
              if not assoc_files: assoc_files = {}
              params = ["-T", "GenotypeGVCFs",
                        "-R", ref_file, "-o", tx_out_file,
                        "-L", bamprep.region_to_gatk(region),
                        "--max_alternate_alleles", "4"]
              for vrn_file in vrn_files:
                  params += ["--variant", vrn_file]
              if assoc_files.get("dbsnp"):
                  params += ["--dbsnp", assoc_files["dbsnp"]]
              broad_runner.new_resources("gatk-haplotype")
              cores = dd.get_cores(data)
              if cores > 1:
                  # GATK performs poorly with memory usage when parallelizing
                  # with a large number of cores but makes use of extra memory,
                  # so we cap at 6 cores.
                  # See issue #1565 for discussion
                  # Recent GATK 3.x versions also have race conditions with multiple
                  # threads, so limit to 1 and keep memory available
                  # https://gatkforums.broadinstitute.org/wdl/discussion/8718/concurrentmodificationexception-in-gatk-3-7-genotypegvcfs
                  # params += ["-nt", str(min(6, cores))]
                  memscale = {"magnitude": 0.9 * cores, "direction": "increase"}
              else:
                  memscale = None
              broad_runner.run_gatk(params, memscale=memscale, parallel_gc=True)
      return vcfutils.bgzip_and_index(out_file, data["config"])
docs: Performs genotyping of gVCFs into final VCF files.