code: def _calc_regional_coverage(in_bam, chrom, start, end, samplename, work_dir, data):
      
      region_bt = pybedtools.BedTool("%s\t%s\t%s\n" % (chrom, start, end), from_string=True).saveas()
      region_file = region_bt.fn
      coords = "%s:%s-%s" % (chrom, start, end)
      tx_tmp_file = os.path.join(work_dir, "coverage-%s-%s.txt" % (samplename, coords.replace(":", "_")))
      samtools = config_utils.get_program("samtools", data)
      bedtools = config_utils.get_program("bedtools", data)
      cmd = ("{samtools} view -b {in_bam} {coords} | "
             "{bedtools} coverage -a {region_file} -b - -d > {tx_tmp_file}")
      do.run(cmd.format(**locals()), "Plotting coverage for %s %s" % (samplename, coords))
      names = ["chom", "start", "end", "offset", "coverage"]
      df = pd.io.parsers.read_table(tx_tmp_file, sep="\t", header=None,
                                    names=names).dropna()
      os.remove(tx_tmp_file)
      df["sample"] = samplename
      df["chrom"] = chrom
      df["position"] = df["start"] + df["offset"] - 1
      return df[["chrom", "position", "coverage", "sample"]]
docs: given a BAM and a region, calculate the coverage for each base in that
      region. returns a pandas dataframe of the format:
  
      chrom position coverage name
  
      where the samplename column is the coverage at chrom:position