<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_muse(job, tumor_bam, normal_bam, univ_options, muse_options):
 """ Spawn a MuSE job for each chromosome on the DNA bams. :param dict tumor_bam: Dict of bam and bai for tumor DNA-Seq :param dict normal_bam: Dict of bam and bai for normal DNA-Seq :param dict univ_options: Dict of universal options used by almost all tools :param dict muse_options: Options specific to MuSE :return: Dict of results from running MuSE on every chromosome perchrom_muse: |- 'chr1': fsID |- 'chr2' fsID | | +- 'chrM': fsID :rtype: dict """

    # Get a list of chromosomes to handle
    if muse_options['chromosomes']:
        chromosomes = muse_options['chromosomes']
    else:
        chromosomes = sample_chromosomes(job, muse_options['genome_fai'])
    perchrom_muse = defaultdict()
    for chrom in chromosomes:
        call = job.addChildJobFn(run_muse_perchrom, tumor_bam, normal_bam, univ_options,
                                 muse_options, chrom, disk=PromisedRequirement(
                                     muse_disk,
                                     tumor_bam['tumor_dna_fix_pg_sorted.bam'],
                                     normal_bam['normal_dna_fix_pg_sorted.bam'],
                                     muse_options['genome_fasta']),
                                 memory='6G')
        sump = call.addChildJobFn(run_muse_sump_perchrom, call.rv(), univ_options, muse_options,
                                  chrom,
                                  disk=PromisedRequirement(muse_sump_disk,
                                                           muse_options['dbsnp_vcf']),
                                  memory='6G')
        perchrom_muse[chrom] = sump.rv()
    return perchrom_muse