<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_rsem(job, star_bams, univ_options, rsem_options):
 """ This module will run rsem on the RNA Bam file. ARGUMENTS 1. star_bams: Dict of input STAR bams star_bams +- 'rnaAligned.toTranscriptome.out.bam': <JSid> 2. univ_options: Dict of universal arguments used by almost all tools univ_options +- 'dockerhub': <dockerhub to use> 3. rsem_options: Dict of parameters specific to rsem rsem_options |- 'index_tar': <JSid for the rsem index tarball> +- 'n': <number of threads to allocate> RETURN VALUES 1. output_file: <Jsid of rsem.isoforms.results> This module corresponds to node 9 on the tree """

    job.fileStore.logToMaster('Running rsem index on %s' % univ_options['patient'])
    work_dir = job.fileStore.getLocalTempDir()
    input_files = {
        'star_transcriptome.bam': star_bams['rnaAligned.toTranscriptome.out.bam'],
        'rsem_index.tar.gz': rsem_options['index_tar']}
    input_files = get_files_from_filestore(job, input_files, work_dir, docker=True)
    parameters = ['--paired-end',
                  '-p', str(rsem_options['n']),
                  '--bam',
                  input_files['star_transcriptome.bam'],
                  '--no-bam-output',
                  '/'.join([input_files['rsem_index'], 'hg19']),
                  'rsem']
    docker_call(tool='rsem', tool_parameters=parameters, work_dir=work_dir,
                dockerhub=univ_options['dockerhub'])
    output_file = \
        job.fileStore.writeGlobalFile('/'.join([work_dir, 'rsem.isoforms.results']))
    return output_file