code: def prep_recal(data):
      
      if dd.get_recalibrate(data) in [True, "gatk"]:
          logger.info("Prepare BQSR tables with GATK: %s " % str(dd.get_sample_name(data)))
          dbsnp_file = tz.get_in(("genome_resources", "variation", "dbsnp"), data)
          if not dbsnp_file:
              logger.info("Skipping GATK BaseRecalibrator because no VCF file of known variants was found.")
              return data
          broad_runner = broad.runner_from_config(data["config"])
          data["prep_recal"] = _gatk_base_recalibrator(broad_runner, dd.get_align_bam(data),
                                                       dd.get_ref_file(data), dd.get_platform(data),
                                                       dbsnp_file,
                                                       dd.get_variant_regions(data) or dd.get_sample_callable(data),
                                                       data)
      elif dd.get_recalibrate(data) == "sentieon":
          logger.info("Prepare BQSR tables with sentieon: %s " % str(dd.get_sample_name(data)))
          data["prep_recal"] = sentieon.bqsr_table(data)
      elif dd.get_recalibrate(data):
          raise NotImplementedError("Unsupported recalibration type: %s" % (dd.get_recalibrate(data)))
      return data
docs: Do pre-BQSR recalibration, calculation of recalibration tables.