Example #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()
Example #2
0
def shuffle_file(_file, headers_count=0, output_dir=None, shuffled_prefix='S_'):
    """
    shuffle contexts of a text file
    """
    if not output_dir:
        output_dir = os.path.abspath(_file)
    shuffled_filename = shuffled_prefix + get_filename(_file, with_extension=True)
    shuffled_file = os.path.join(output_dir, shuffled_filename)
    with open(_file, 'r') as _f:
        file_data = [line for line in _f]
        shuffled_idxs = np.random.permutation(len(file_data) - 1) \
                    + headers_count
        with open(shuffled_file, 'w') as _shuffled_file:
            #write header lines
            for line in file_data[:headers_count]:
                _shuffled_file.write(line)
            for i in np.arange(headers_count, len(file_data)):
                _shuffled_file.write(file_data[shuffled_idxs[i - 1]])
    return shuffled_file
Example #3
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()
Example #4
0
    def __init__(self, data_vector, movie_parameters, **params):
        self.p = movie_parameters
        if not self.p.movie_name == None:
            self.params = Params(**params)
            mpl.rcParams['patch.edgecolor'] = 'none'
            mpl.rcParams['savefig.edgecolor'] = 'none'
            self.source = get_filename(self.params.reference_filename)
            self.__prefixed_movie_name__ = self.__get_prefixed_movie_name__()
            self.__prefixed_movie_dir__ = self.__get_prefixed_movie_dir__()

            if not self.params.filter_manager == None:
                data_vector = self.params.filter_manager.run_filters(
                    data_vector)
            _max = pl.amax(data_vector.signal)
            _min = pl.amin(data_vector.signal)
            self.time = data_vector.time

            margin = 50
            self.signal_size = len(data_vector.signal)
            self.range = [
                _min - margin, _max + margin, _min - margin, _max + margin
            ]
            self.x_data = pl.zeros(self.signal_size)
            self.y_data = pl.zeros(self.signal_size)

            self.old_signal_plus = None
            self.idx = 0
            self.active_color = get_extended_color_array(
                movie_parameters.movie_active_color)
            self.inactive_color = get_extended_color_array(
                movie_parameters.movie_inactive_color)
            self.centroid_color = get_extended_color_array(
                movie_parameters.movie_centroid_color)
            self.message = None
            self.core_nums = multiprocessing.cpu_count(
            ) * self.p.movie_multiprocessing_factor  # @IgnorePep8

            self.pp_spec_manager = MiniPoincarePlotSpecManager()
            self.pp_spec_manager.movie_dir = self.__prefixed_movie_dir__
            self.pp_spec_manager.movie_name = self.__prefixed_movie_name__
            self.pp_spec_manager.movie_dpi = self.p.movie_dpi
            self.pp_spec_manager.movie_fps = self.p.movie_fps
            self.pp_spec_manager.movie_height = self.p.movie_height
            self.pp_spec_manager.movie_width = self.p.movie_width
            self.pp_spec_manager.active_color = self.active_color
            self.pp_spec_manager.inactive_color = self.inactive_color
            self.pp_spec_manager.centroid_color = self.centroid_color
            self.pp_spec_manager.active_point_size = self.p.movie_active_size
            self.pp_spec_manager.inactive_point_size = \
                                            self.p.movie_inactive_size
            self.pp_spec_manager.centroid_point_size = \
                                            self.p.movie_centroid_size
            self.pp_spec_manager.show_plot_legends = \
                                        self.p.movie_show_plot_legends
            self.pp_spec_manager.x_label = self.p.x_label
            self.pp_spec_manager.y_label = self.p.y_label
            self.pp_spec_manager.clean_frames = self.p.movie_clean_frames
            self.pp_spec_manager.movie_title = self.p.movie_title
            self.pp_spec_manager.movie_frame_step = self.p.movie_frame_step
            self.pp_spec_manager.movie_identity_line = self.p.movie_identity_line
            self.pp_spec_manager.movie_hour_label = self.p.movie_hour_label
            self.pp_spec_manager.movie_minute_label = self.p.movie_minute_label
            self.pp_spec_manager.movie_second_label = self.p.movie_second_label
            self.pp_spec_manager.movie_time_label_in_line = self.p.movie_time_label_in_line
            self.pp_spec_manager.movie_time_label_font_size = self.p.movie_time_label_font_size
            self.pp_spec_manager.movie_time_label_prefix = self.p.movie_time_label_prefix
            self.pp_spec_manager.movie_title_font_size = self.p.movie_title_font_size
            self.pp_spec_manager.movie_axis_font_size = self.p.movie_axis_font_size
            self.pp_spec_manager.movie_axis_font = self.p.movie_axis_font
            self.pp_spec_manager.movie_title_font = self.p.movie_title_font
            self.pp_spec_manager.movie_tick_font = self.p.movie_tick_font
            self.pp_spec_manager.movie_frame_pad = self.p.movie_frame_pad
            self.pp_spec_manager.movie_create_time_label = self.p.movie_create_time_label
            self.pp_spec_manager.movie_frame_filename_with_time = self.p.movie_frame_filename_with_time

            self.pp_specs_managers = []
            self.pp_specs_managers.append(self.pp_spec_manager)
            self.sub_dir_counter = 0
            self.scatter = None
            self.legend_text = None
            self.pp_specs = []
            self.cum_inactive = 0
            self._pp_spec_old = None
            self.s_size = 0  # current calculated signal size
Example #5
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")
Example #6
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")
    def __init__(self, data_vector, movie_parameters, **params):
        self.p = movie_parameters
        if not self.p.movie_name == None:
            self.params = Params(**params)
            mpl.rcParams['patch.edgecolor'] = 'none'
            mpl.rcParams['savefig.edgecolor'] = 'none'
            self.source = get_filename(self.params.reference_filename)
            self.__prefixed_movie_name__ = self.__get_prefixed_movie_name__()
            self.__prefixed_movie_dir__ = self.__get_prefixed_movie_dir__()

            if not self.params.filter_manager == None:
                data_vector = self.params.filter_manager.run_filters(
                                                                data_vector)
            _max = pl.amax(data_vector.signal)
            _min = pl.amin(data_vector.signal)
            self.time = data_vector.time

            margin = 50
            self.signal_size = len(data_vector.signal)
            self.range = [_min - margin, _max + margin,
                          _min - margin, _max + margin]
            self.x_data = pl.zeros(self.signal_size)
            self.y_data = pl.zeros(self.signal_size)

            self.old_signal_plus = None
            self.idx = 0
            self.active_color = get_extended_color_array(
                                        movie_parameters.movie_active_color)
            self.inactive_color = get_extended_color_array(
                                        movie_parameters.movie_inactive_color)
            self.centroid_color = get_extended_color_array(
                                        movie_parameters.movie_centroid_color)
            self.message = None
            self.core_nums = multiprocessing.cpu_count() * self.p.movie_multiprocessing_factor # @IgnorePep8

            self.pp_spec_manager = MiniPoincarePlotSpecManager()
            self.pp_spec_manager.movie_dir = self.__prefixed_movie_dir__
            self.pp_spec_manager.movie_name = self.__prefixed_movie_name__
            self.pp_spec_manager.movie_dpi = self.p.movie_dpi
            self.pp_spec_manager.movie_fps = self.p.movie_fps
            self.pp_spec_manager.movie_height = self.p.movie_height
            self.pp_spec_manager.movie_width = self.p.movie_width
            self.pp_spec_manager.active_color = self.active_color
            self.pp_spec_manager.inactive_color = self.inactive_color
            self.pp_spec_manager.centroid_color = self.centroid_color
            self.pp_spec_manager.active_point_size = self.p.movie_active_size
            self.pp_spec_manager.inactive_point_size = \
                                            self.p.movie_inactive_size
            self.pp_spec_manager.centroid_point_size = \
                                            self.p.movie_centroid_size
            self.pp_spec_manager.show_plot_legends = \
                                        self.p.movie_show_plot_legends
            self.pp_spec_manager.x_label = self.p.x_label
            self.pp_spec_manager.y_label = self.p.y_label
            self.pp_spec_manager.clean_frames = self.p.movie_clean_frames
            self.pp_spec_manager.movie_title = self.p.movie_title
            self.pp_spec_manager.movie_frame_step = self.p.movie_frame_step
            self.pp_spec_manager.movie_identity_line = self.p.movie_identity_line
            self.pp_spec_manager.movie_hour_label = self.p.movie_hour_label
            self.pp_spec_manager.movie_minute_label = self.p.movie_minute_label
            self.pp_spec_manager.movie_second_label = self.p.movie_second_label
            self.pp_spec_manager.movie_time_label_in_line = self.p.movie_time_label_in_line
            self.pp_spec_manager.movie_time_label_font_size = self.p.movie_time_label_font_size
            self.pp_spec_manager.movie_time_label_prefix = self.p.movie_time_label_prefix
            self.pp_spec_manager.movie_title_font_size = self.p.movie_title_font_size
            self.pp_spec_manager.movie_axis_font_size = self.p.movie_axis_font_size
            self.pp_spec_manager.movie_axis_font = self.p.movie_axis_font
            self.pp_spec_manager.movie_title_font = self.p.movie_title_font
            self.pp_spec_manager.movie_tick_font = self.p.movie_tick_font
            self.pp_spec_manager.movie_frame_pad = self.p.movie_frame_pad
            self.pp_spec_manager.movie_create_time_label = self.p.movie_create_time_label
            self.pp_spec_manager.movie_frame_filename_with_time = self.p.movie_frame_filename_with_time

            self.pp_specs_managers = []
            self.pp_specs_managers.append(self.pp_spec_manager)
            self.sub_dir_counter = 0
            self.scatter = None
            self.legend_text = None
            self.pp_specs = []
            self.cum_inactive = 0
            self._pp_spec_old = None
            self.s_size = 0  # current calculated signal size