Пример #1
0
def create_many_plots(_source_file, headers, separator, window_size=None):
    """
    draws many plots base on data from _source_file and collection of headers
    grouped by a semicolon, elements in a group are separated by a comma
    """
    colors = ['red', 'green', 'blue', 'yellow', 'black', 'cyan', 'magenta']

    first_line = get_first_lines(_source_file)
    if len(first_line) == 0:
        return
    file_headers = [
        header.strip().lower() for header in first_line[0].split(separator)
    ]
    for sub_headers in get_as_list(headers, separator=';'):
        labels = [label.strip().lower() for label in get_as_list(sub_headers)]
        try:
            cols = tuple([file_headers.index(label) for label in labels])
        except ValueError:
            continue
        if separator == None:
            values = np.loadtxt(_source_file,
                                skiprows=1,
                                unpack=True,
                                usecols=cols)
        else:
            values = np.loadtxt(_source_file,
                                skiprows=1,
                                unpack=True,
                                usecols=cols,
                                delimiter=separator)

        plt.gca().set_color_cycle(colors[:len(labels)])

        filename = get_filename(_source_file)
        title = "%s %s" % (filename, nvl(window_size + " window size", ''))
        plt.title(title)

        for value in values:
            plt.plot(value)

        plt.legend(labels, loc='upper right')
        plt.axes().set_xlabel('Time')

        plot_filename = "%s_%s.png" % (filename, '_'.join(labels))
        _file = as_path(fs.dirname(_source_file), plot_filename)
        plt.savefig(_file)
        plt.cla()
Пример #2
0
def create_many_plots(_source_file, headers, separator, window_size=None):
    """
    draws many plots base on data from _source_file and collection of headers
    grouped by a semicolon, elements in a group are separated by a comma
    """
    colors = ['red', 'green', 'blue', 'yellow', 'black', 'cyan', 'magenta']

    first_line = get_first_lines(_source_file)
    if len(first_line) == 0:
        return
    file_headers = [header.strip().lower()
            for header in first_line[0].split(separator)]
    for sub_headers in get_as_list(headers, separator=';'):
        labels = [label.strip().lower()
                  for label in get_as_list(sub_headers)]
        try:
            cols = tuple([file_headers.index(label) for label in labels])
        except ValueError:
            continue
        if separator == None:
            values = np.loadtxt(_source_file, skiprows=1, unpack=True,
                                usecols=cols)
        else:
            values = np.loadtxt(_source_file, skiprows=1, unpack=True,
                                usecols=cols, delimiter=separator)

        plt.gca().set_color_cycle(colors[:len(labels)])

        filename = get_filename(_source_file)
        title = "%s %s" % (filename, nvl(window_size + " window size", ''))
        plt.title(title)

        for value in values:
            plt.plot(value)

        plt.legend(labels, loc='upper right')
        plt.axes().set_xlabel('Time')

        plot_filename = "%s_%s.png" % (filename, '_'.join(labels))
        _file = as_path(fs.dirname(_source_file), plot_filename)
        plt.savefig(_file)
        plt.cla()
Пример #3
0
def merge_xls_by_index_file(output_xls, source_csv_files_mask, separator,
              index_file_xls, index_sheet_name):
    print('***************************************************')
    print('csv source files: ' + source_csv_files_mask)

    index_xls = load_workbook(index_file_xls)
    index_sheet = index_xls.get_sheet_by_name(index_sheet_name)
    index_cells = zip(index_sheet.columns[0], index_sheet.columns[1])

    xls = None
    merged_sheet = None
    for file_nr, _file in enumerate(glob.glob(source_csv_files_mask)):
        #if file_nr == 2:
        #    break
        print('===================================')
        print('Processing file: ' + str(_file))
        if xls == None:
            xls = load_workbook(output_xls)
            merged_sheet = xls.get_sheet_by_name('merged')
            headers_cells = merged_sheet.rows[0]
            code_cells = merged_sheet.columns[2]

        (headers_line, values_line) = get_first_lines(_file, count=2)
        filename = get_filename(_file)
        (group, file_ident) = filename.split('_')
        headers = [str(group + "_" + header.strip())
                        for header in headers_line.split(separator)]
        values = [value.strip() for value in values_line.split(separator)]

        file_number = extract_number(file_ident)
        ident_row = None
        for (file_index_cell, code_index_cell) in index_cells:
            if not ident_row == None:
                break
            if file_number == file_index_cell.value:
                for code_cell in code_cells:
                    if code_cell.value == code_index_cell.value:
                        ident_row = code_cell.row - 1
                        break

        #print("ident_row: " + str(ident_row))
        #add header
        save = False
        if ident_row:
            for header_idx, header in enumerate(headers):

                ident_column = None
                for cell in headers_cells:
                    if header == cell.value:
                        ident_column = cell.column
                        break
                if ident_column == None:
                    ident_column = merged_sheet.get_highest_column()
                    header_cell = merged_sheet.cell(row=0, column=ident_column)
                    header_cell.value = header
                    value_cell = merged_sheet.cell(row=ident_row,
                                               column=ident_column)
                    save = True
                else:
                    value_cell = merged_sheet.cell(
                                coordinate=ident_column + str(ident_row + 1))
                value_cell.value = values[header_idx]
        else:
            print('No item in xls file for ' + str(_file))
            return
        if save:
            print("Saving " + output_xls)
            xls.save(output_xls)
            print(".. done")
            xls = None

    if not xls == None:
        print("Saving " + output_xls)
        xls.save(output_xls)
        print(".. done")
Пример #4
0
def merge_xls_by_column(output_xls, sheet_name, output_column_idx,
                        source_csv_files_mask, separator):
    print('***************************************************')
    print('csv source files: ' + source_csv_files_mask)

    xls = None
    merged_sheet = None
    for file_nr, _file in enumerate(glob.glob(source_csv_files_mask)):
        #if file_nr == 2:
        #    break
        print('===================================')
        print('Processing file: ' + str(_file))
        if xls == None:
            xls = load_workbook(output_xls)
            merged_sheet = xls.get_sheet_by_name(sheet_name)
            headers_cells = merged_sheet.rows[0]
            code_cells = merged_sheet.columns[output_column_idx]

        (headers_line, values_line) = get_first_lines(_file, count=2)
        filename = get_filename(_file)
        (group, file_ident) = filename.split('_')
        file_ident = file_ident.lstrip('0')
        headers = [str(group + "_" + header.strip())
                        for header in headers_line.split(separator)]
        values = [value.strip() for value in values_line.split(separator)]

        #if file_ident.isdigit():
        #    file_number = int(file_ident)
        #else:
        #    file_number = file_ident.lstrip('0')
        file_number = file_ident

        ident_row = None
        _continue = False
        for code_cell in code_cells:
            value = code_cell.value
            if value == None:
                _continue = True
            elif file_number == value.lstrip('0'):
                ident_row = code_cell.row - 1
                break

        if _continue:
            continue
        #print("ident_row: " + str(ident_row))
        #add header
        save = False
        if ident_row:
            for header_idx, header in enumerate(headers):

                ident_column = None
                for cell in headers_cells:
                    if header == cell.value:
                        ident_column = cell.column
                        break
                if ident_column == None:
                    ident_column = merged_sheet.get_highest_column()
                    header_cell = merged_sheet.cell(row=0, column=ident_column)
                    header_cell.value = header
                    value_cell = merged_sheet.cell(row=ident_row,
                                               column=ident_column)
                    save = True
                else:
                    value_cell = merged_sheet.cell(
                                coordinate=ident_column + str(ident_row + 1))
                value_cell.value = values[header_idx]
        else:
            print('No item in xls file for ' + str(_file))
            continue
        if save:
            print("Saving " + output_xls)
            xls.save(output_xls)
            print(".. done")
            xls = None

    if not xls == None:
        print("Saving " + output_xls)
        xls.save(output_xls)
        print(".. done")