code: def run_gatk(self, params, tmp_dir=None, log_error=True,
                   data=None, region=None, memscale=None, parallel_gc=False, ld_preload=False):
          
          needs_java7 = LooseVersion(self.get_gatk_version()) < LooseVersion("3.6")
          # For old Java requirements use global java 7
          if needs_java7:
              setpath.remove_bcbiopath()
          with tx_tmpdir(self._config) as local_tmp_dir:
              if tmp_dir is None:
                  tmp_dir = local_tmp_dir
              cl = self.cl_gatk(params, tmp_dir, memscale=memscale, parallel_gc=parallel_gc)
              atype_index = params.index("-T") if params.count("-T") > 0 \
                            else params.index("--analysis_type")
              prog = params[atype_index + 1]
              cl = fix_missing_spark_user(cl, prog, params)
              if ld_preload:
                  cl = "export LD_PRELOAD=%s/lib/libopenblas.so && %s" % (os.path.dirname(utils.get_bcbio_bin()), cl)
              do.run(cl, "GATK: {0}".format(prog), data, region=region,
                     log_error=log_error)
          if needs_java7:
              setpath.prepend_bcbiopath()
docs: Top level interface to running a GATK command.
  
          ld_preload injects required libraries for Java JNI calls:
          https://gatkforums.broadinstitute.org/gatk/discussion/8810/something-about-create-pon-workflow