def split_mach_jobs(args, filename):
    """Parse the MACH file and generate the list of jobs.

    :param args: Arguments from parseargs
    :param filename: name of file containing list of mach dosage files
    :return jobs to be run
    """
    max_snp_count = args.snps_per_job

    job_list = {}
    cur = None
    last_pos = None
    job_string = ""
    job_name = ""

    mach_count = 1
    if args.mach_count:
        mach_count = args.mach_count

    ExitIf("mvmany doesn't support splitting mach jobs into pieces at this time", max_snp_count > 1)

    dosage_files = []
    for line in open(filename):
        dosage_files.append(line.strip().split("/")[-1].split(".")[0])
        dosage_files.append(".".join(line.strip().split()[-1].split("/")[-1].split(".")[0:-1]))

    file_count = len(dosage_files)
    job_count = int(math.ceil(float(file_count) / mach_count))

    for job_num in range(job_count):
        job_idx = job_num * mach_count + 1
        job_string = "--mach-count %d --mach-offset %d" % (mach_count, job_idx)
        job_name = "job%04d-%s" % (job_num+1, dosage_files[job_idx - 1])
        job_list[job_name] = job_string

    return job_list
Parse the MACH file and generate the list of jobs.

    :param args: Arguments from parseargs
    :param filename: name of file containing list of mach dosage files
    :return jobs to be run