docs: def run(bam, chrom, pos1, pos2, reffa, chr_reffa, parameters):
      """Run mpileup on given chrom and pos"""
  
      # check for chr ref
      is_chr_query = chrom.startswith('chr')
      if is_chr_query and chr_reffa is None:
          chr_reffa = reffa
  
      # check bam ref type
      bam_header = subprocess.check_output("samtools view -H {}".format(bam), shell=True)
      is_chr_bam = bam_header.find('SN:chr') != -1
      if is_chr_bam:
          reffa = chr_reffa
      if not is_chr_query and is_chr_bam:
          chrom = 'chr' + chrom
      if is_chr_query and not is_chr_bam:
          chrom = re.sub(r'^chr', '', chrom)
  
      posmin = min(pos1, pos2)
      posmax = max(pos1, pos2)
      cmd = "samtools view -bh {bam} {chrom}:{pos1}-{pos2} " \
          "| samtools mpileup {parameters} -f {reffa} -".format(bam=bam, chrom=chrom,
                                                                pos1=posmin, pos2=posmax,
                                                                reffa=reffa, parameters=parameters)
      if pos1 == pos2:
          cmd += " | awk '$2 == {pos}'".format(pos=pos1)
      else:
          cmd += " | tail -n +2 | awk '$2 >= {posmin} && $2 <= {posmax}'".format(posmin=posmin, posmax=posmax)
      sys.stderr.write("Running:\n{}\n".format(cmd))
      child = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
      stdout, stderr = child.communicate()
      if child.returncode != 0:
          if len(stdout) == 0 and stderr is None:
              warnings.warn("Command:\n{cmd}\n did not exit with zero exit code. "
                            "Possibly no coverage for sample.".format(cmd=cmd))
          else:
              raise(Exception("Command:\n{cmd}\n did not exit with zero exit code. "
                              "Check command.".format(cmd=cmd)))
      else:
          return stdout