code: def count_unique_reads(self, file_name, paired_end):
          
          if file_name.endswith("sam"):
              param = "-S"
          if file_name.endswith("bam"):
              param = ""
          if paired_end:
              r1 = self.samtools_view(file_name, param=param + " -f64", postpend=" | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//'")
              r2 = self.samtools_view(file_name, param=param + " -f128", postpend=" | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//'")
          else:
              r1 = self.samtools_view(file_name, param=param + "", postpend=" | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//'")
              r2 = 0
          return int(r1) + int(r2)
docs: Sometimes alignment software puts multiple locations for a single read; if you just count
          those reads, you will get an inaccurate count. This is _not_ the same as multimapping reads,
          which may or may not be actually duplicated in the bam file (depending on the alignment
          software).
          This function counts each read only once.
          This accounts for paired end or not for free because pairs have the same read name.
          In this function, a paired-end read would count as 2 reads.