def activity(task):
    drawall = len(task) == 2
    fname = task[0]
    sfname = "analyzer_settings.txt"
    wind_size = int(fs.load_parameter(sfname, "WINDOWSIZE", 7))
    pstart = int(fs.load_parameter(sfname, "PACKSTART", 79))
    pend = int(fs.load_parameter(sfname, "PACKEND", 21))
    columns = int(fs.load_parameter(sfname, "HISTCOLUMNS", 7))
    params = (wind_size, pstart, pend)
    alldata = fs.load_matrix(fname)
    if alldata is not None:
        packs = []
        start_ind = 0
        flag = True
        while flag:
            pack = find_pack(alldata, start_ind, params)
            if pack is not None:
                packs.append(pack)
                start_ind = pack[1]
            else:
                flag = False

        packs = list(map(lambda x: alldata[x[0]:x[1]], packs))
        if drawall:
            draw_activity(alldata, "all activity")
            p_act_data = [get_population_activity(alldata)]
            fs.save_matrix(p_act_data, "output/analyzer/all activity.txt")
        process_burst(alldata, 0, columns)
        for i in range(len(packs)):
            process_burst(packs[i], i+1, columns)
            draw_activity(packs[i], "pack " + str(i+1) + " activity")
    else:
        print("cannot read file '" + fname + "'", flush=True)
def graph(task):
    lims = len(task) != 1
    if lims:
        fname = task[2]
    else:
        fname = task[0]

    axis_name = fname
    try:
        fname_index = axis_name.rindex('\\') + 1
        axis_name = axis_name[fname_index:]
    except ValueError:
        pass
    try:
        fname_index = axis_name.rindex('/') + 1
        axis_name = axis_name[fname_index:]
    except ValueError:
        pass
    try:
        dot_index =axis_name.rindex('.')
        axis_name = axis_name[:dot_index]
    except ValueError:
        pass
    matrix_act = fs.load_matrix(fname)

    if matrix_act is not None:
        act = matrix_act[0]
        result_name = "output/analyzer/graph_" + axis_name
        plt.figure(figsize=(max(8, len(act)/50), 6))
        plt.xlabel("time")
        plt.ylabel(axis_name)
        if lims:
            plt.ylim(task[:2])
        plt.plot(act)
        plt.savefig(result_name + ".png")
        plt.close()

        stat = calculate_statistics_sequence(act)
        output = "m = {0}\nD = {1}\na = {2}\nk = {3}".format(stat[0], stat[1], stat[2], stat[3])
        fs.write_file(result_name + ".txt", output)
    else:
        print("cannot read file '" + fname + "'", flush=True)