code: def filter_primary(bam_file, data):
      
      stem, ext = os.path.splitext(bam_file)
      out_file = stem + ".primary" + ext
      if not utils.file_exists(out_file):
          with file_transaction(data, out_file) as tx_out_file:
              cores = dd.get_num_cores(data)
              cmd = ("samtools view -@ {cores} -F 2304 -b {bam_file} > {tx_out_file}")
              do.run(cmd.format(**locals()), ("Filtering primary alignments in %s." %
                                              os.path.basename(bam_file)))
      return out_file
docs: Filter reads to primary only BAM.
  
      Removes:
        - not primary alignment (0x100) 256
        - supplementary alignment (0x800) 2048