row_count = 0;
        try:
            for row in reader:
                row_count = row_count + 1;
                item_num = int(len(row) / 8)
                for i in range(1, item_num + 1):
                    start_sub = 8 * (i - 1)
                    if row[start_sub + 1] == '':
                        continue

                    map_name = row[start_sub+1];

                    original_alignment = row[start_sub + 2];
                    dict_alignment = row[start_sub + 3];

                    score = classify_gbc.sequence2(original_alignment, dict_alignment)

                    if score == sys.maxsize:
                        # print('Invalid alignment.')
                        pass
                    else:
                        writer.writerow({'map_name': map_name, 'org_text': original_alignment.replace(',', ''),
                                     'dict_text': dict_alignment.replace('-', '').replace(',', ''),
                                     'score':  score, 'x': row[start_sub + 4], 'y': row[start_sub + 5],
                                     'w': row[start_sub + 6], 'h': row[start_sub + 7]})
                        # pass
                        # print('score: ', score)

                print('finish row ', row_count)
        except UnicodeDecodeError:
            print(row)
import classify_gbc
import io


if __name__ == '__main__':
    with io.open('python_input.csv', 'r', newline='', encoding="mbcs") as fp:
        reader = csv.reader(fp)
        count = 0

        for row in reader:
            print(count)
            count += 1
            row_size = len(row)
            iter = row_size / 8

            offset = 0
            for j in range(0, int(iter)):
                offset = j
                map_id = 0 if row[1 + 8 * offset] == '' else int(row[1 + 8 * offset])
                truth = row[2 + 8 * offset].lower()
                dict = row[3 + 8 * offset].lower()
                x = 0 if row[4 + 8 * offset] == '' else int(row[4 + 8 * offset])
                y = 0 if row[5 + 8 * offset] == '' else int(row[5 + 8 * offset])
                w = 0 if row[6 + 8 * offset] == '' else int(row[6 + 8 * offset])
                h = 0 if row[7 + 8 * offset] == '' else int(row[7 + 8 * offset])
                if len(truth) == 0 or len(dict) == 0:
                    continue
                classify_gbc.sequence2(truth, dict, x, y, w, h, map_id)


    lines = cf.readlines()
    count = 0

    candidates = []
    word_score = {}

    # Compute the score for all the candidates.
    while count + 5 < len(lines):
        # print('Computing score for candiate: %d' % int(count / 6))
        original_phrase = lines[count + 1]
        original_word = lines[count + 2][:-1].replace('-', '')
        alignment0 = lines[count + 2][:-1]
        alignment1 = lines[count + 3][:-1]
        idx = int(lines[count + 4][:-1])

        score = classify_gbc.sequence2(alignment0, alignment1)

        if original_phrase not in word_score:
            word_score[original_phrase] = {}

        if original_word not in word_score[original_phrase]:
            word_score[original_phrase][original_word] = {}
            word_score[original_phrase][original_word]['max'] = -10000
            word_score[original_phrase][original_word]['cand'] = []

        dict_text = alignment1.replace('-', '')
        word_score[original_phrase][original_word]['cand'].append((idx, dict_text, score))
        if score > word_score[original_phrase][original_word]['max']:
            word_score[original_phrase][original_word]['max'] = score

        count += 6
import classify_gbc


if __name__ == '__main__':
    score = classify_gbc.sequence2('hill', 'hill')
    print(score)