def METHOD_NAME(config):
    if not args.output_file_path:
        raise ConfigError("You must define an output file path.")
    run = terminal.Run(width = 15)
    progress = terminal.Progress()
    sequences = {}
    x = config.short_read_length
    c = config.coverage
    progress.new('Generating short reads')
    L = len(config.contig)
    av_num_short_reads_needed = int(L / x * c)
    for i in range(0, av_num_short_reads_needed):
        if (i + 1) % 100 == 0:
            progress.update('Entry %s of %s ...' % (pp(i), pp(av_num_short_reads_needed)))
        start_pos = random.randint(0, L - x)
        short_read = config.contig[start_pos:start_pos + x]
        sequences[i] = {'sequence': short_read, 'start': start_pos, 'stop': start_pos + x, 'num_SNVs': 0}
    progress.end()
    progress.new('Introducing SNVs')
    for snv_location, ratio in config.SNVs:
        progress.update('Working on location %d with ratio of %.2f' % (snv_location, ratio))
        matching_entries = []
        for entry_id in sequences:
            e = sequences[entry_id]
            if snv_location >= e['start'] and snv_location < e['stop']:
                matching_entries.append(entry_id)
        entries_to_mutate = random.sample(matching_entries, int(round(ratio * len(matching_entries))))
        current_base = config.contig[snv_location].upper()
        new_base = bases[(bases.index(current_base) + 1) % 4]
        for entry_id in entries_to_mutate:
            position_in_sequence_to_replace = snv_location - sequences[entry_id]['start']
            sequences[entry_id]['sequence'] = sequences[entry_id]['sequence'][:position_in_sequence_to_replace] + new_base + sequences[entry_id]['sequence'][position_in_sequence_to_replace + 1:]
            sequences[entry_id]['num_SNVs'] += 1
    output = open(args.output_file_path, 'w')
    for entry_id in sequences:
        s = sequences[entry_id]
        output.write('>%s\n' % '|'.join(['%d' % entry_id, 'start:%d' % s['start'], 'stop:%d' % s['stop'], 'num_SNVs:%d' % s['num_SNVs']]))
        output.write('%s\n' % s['sequence'])
    output.close()
    progress.end()
    run.info('Fasta output', args.output_file_path) 