code: def rsem_calculate_expression(bam_file, rsem_genome_dir, samplename,
                                build, out_dir, cores=1):
      
      if not utils.which("rsem-calculate-expression"):
          logger.info("Skipping RSEM because rsem-calculate-expression could "
                      "not be found.")
          return None
  
      sentinel_file = os.path.join(out_dir, samplename + "Test.genes.results")
      if utils.file_exists(sentinel_file):
          return out_dir
  
      paired_flag = "--paired" if bam.is_paired(bam_file) else ""
      core_flag = "-p {cores}".format(cores=cores)
      command = CALCULATE_EXP.format(
          core_flag=core_flag, paired_flag=paired_flag, bam_file=bam_file,
          rsem_genome_dir=rsem_genome_dir, build=build, samplename=samplename)
      message = "Calculating transcript expression of {bam_file} using RSEM."
  
      with transaction.file_transaction(out_dir) as tx_out_dir:
          utils.safe_makedir(tx_out_dir)
          with utils.chdir(tx_out_dir):
              do.run(command, message.format(bam_file=bam_file))
      return out_dir
docs: works only in unstranded mode for now (--forward-prob 0.5)