Example #1
0
def main():
    argc = len(sys.argv)
    if argc < 2:
        sys.stderr.write("Error: bad parameters\n")
        print_help()
        sys.exit(1)

    csv_file = sys.argv[1]
    csv_fd = open(csv_file, "r")
    csv_file = os.path.basename(csv_file)

    normal_msgs = con_par.get_messages(csv_fd)
    parser = con_par.IEC104Parser(normal_msgs)
    parser.parse_conversations()
    lines = parser.get_all_conversations(abstraction)

    index = int(len(lines)*TRAINING)
    training, testing = lines[:index], lines[index:]

    tree = fpt.FPT()
    for line in training:
        tree.add_string(line)

    alpha = 0.05
    t0 = int(math.log(index, 2))

    aut = alergia.alergia(tree, alpha, t0)
    aut.rename_states()
    fa = aut.normalize()

    store_filename = os.path.splitext(os.path.basename(csv_file))[0]
    store_filename = "{0}a{1}t{2}".format(store_filename, alpha, t0)

    fa_fd = open("{0}.fa".format(store_filename), "w")
    fa_fd.write(fa.to_fa_format(True))
    fa_fd.close()

    legend = "File: {0}, alpha: {1}, t0: {2}".format(csv_file, alpha, t0)
    dot_fd = open("{0}.dot".format(store_filename), "w")
    dot_fd.write(fa.to_dot(aggregate=False, legend=legend))
    dot_fd.close()

    miss = 0
    for line in testing:
        prob = fa.string_prob_deterministic(line)
        if prob is None:
            miss += 1

    print("File: {0}".format(csv_file))
    print("alpha: {0}, t0: {1}".format(alpha, t0))
    print("States {0}".format(len(aut.get_states())))
    print("Testing: {0}/{1} (missclassified/all)".format(miss, len(testing)))
    if len(testing) > 0:
        print("Accuracy: {0}".format((len(testing)-miss)/float(len(testing))))

    csv_fd.close()
Example #2
0
def learn_proc_pa(training):
    tree = fpt.FPT()
    tree.add_string_list(training)
    alpha = 0.05
    if len(training) > 0:
        t0 = int(math.log(len(training), 2))
    else:
        t0 = 1
    aut = alergia.alergia(tree, alpha, t0)
    aut.rename_states()
    return aut.normalize()
Example #3
0
def learn_proc_pta(training):
    tree = fpt.FPT()
    tree.add_string_list(training)
    aut = tree
    aut.rename_states()
    return aut.normalize()
Example #4
0
def create_fpt(ln, ren_dict):
    tree = fpt.FPT()
    lines = con_par.rename_values(ln, ren_dict)
    tree.add_string_list(ln)
    return tree