Пример #1
0
def expand_to_real_class_names(short_classes_names,
                               _base_class,
                               _class_suffix=''):
    """
    method converts user's inputed classes names into
    real statistics class names
    e.g. _class_suffix = 'statistic'
    """
    real_classes_names = []
    real_names = [(
        name,
        name.lower(),
    ) for name in get_subclasses_names(_base_class)]
    lower_names = [
        (
            name.lower(),
            name.lower() + _class_suffix,
        )  # e.g. _class_suffix = 'statistic' @IgnorePep8
        for name in get_as_list(short_classes_names)
    ]
    for (class_lower_name, class_base_name) in lower_names:
        for (real_name, real_lower_name) in real_names:
            if real_lower_name in (class_lower_name, class_base_name):
                real_classes_names.append(real_name)
                break
        else:
            print('Uknown class: ' + class_lower_name)
            return []
    return real_classes_names
    def prepareParameters(self):
        """
        method prepares poincare plot parameters
        """
        if self.stepper:
            self.stepper_size = extract_number(self.stepper, convert=int)
            self.stepper_unit = extract_alphabetic(self.stepper,
                                                   convert=str.lower)
        self.movie_dir = nvl(self.movie_dir, self.output_dir, '')

        if isinstance(self.excluded_annotations, str):
            self.excluded_annotations = get_as_list(self.excluded_annotations)

        if self.filters_names is not None:
            map(self.addFilter, get_as_list(self.filters_names))

        if self.output_dir:
            # remove leading and trailing whitespaces
            self.output_dir = self.output_dir.strip()

        if self.window_size:
            self.window_size_unit = extract_alphabetic(self.window_size,
                                                       convert=str.lower)
            self.window_size_value = extract_number(self.window_size,
                                                    convert=int)

        self.movie_multiprocessing_factor = nvl(
            self.movie_multiprocessing_factor,
            3 if multiprocessing.cpu_count() > 1 else 0)

        if not self.data_file == None:
            self.group_data_filename = None

        if isinstance(self.output_precision, str):
            self.output_precision = get_as_tuple(self.output_precision,
                                                 convert=int)
        elif self.output_precision == None:
            self.output_precision = DEFAULT_OUTPUT_PRECISION

        if self.add_headers == None:
            self.add_headers = True

        if len(self.statistics_classes) > 0:
            self.statistics_names = [
                s.__name__.replace("Statistic", "")
                for s in self.statistics_classes
            ]
Пример #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()
Пример #4
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()
    def prepareParameters(self):
        """
        method prepares poincare plot parameters
        """
        if self.stepper:
            self.stepper_size = extract_number(self.stepper, convert=int)
            self.stepper_unit = extract_alphabetic(self.stepper, convert=str.lower)
        self.movie_dir = nvl(self.movie_dir, self.output_dir, "")

        if isinstance(self.excluded_annotations, str):
            self.excluded_annotations = get_as_list(self.excluded_annotations)

        if self.filters_names is not None:
            map(self.addFilter, get_as_list(self.filters_names))

        if self.output_dir:
            # remove leading and trailing whitespaces
            self.output_dir = self.output_dir.strip()

        if self.window_size:
            self.window_size_unit = extract_alphabetic(self.window_size, convert=str.lower)
            self.window_size_value = extract_number(self.window_size, convert=int)

        self.movie_multiprocessing_factor = nvl(
            self.movie_multiprocessing_factor, 3 if multiprocessing.cpu_count() > 1 else 0
        )

        if not self.data_file == None:
            self.group_data_filename = None

        if isinstance(self.output_precision, str):
            self.output_precision = get_as_tuple(self.output_precision, convert=int)
        elif self.output_precision == None:
            self.output_precision = DEFAULT_OUTPUT_PRECISION

        if self.add_headers == None:
            self.add_headers = True

        if len(self.statistics_classes) > 0:
            self.statistics_names = [s.__name__.replace("Statistic", "") for s in self.statistics_classes]
Пример #6
0
def expand_to_real_filters_names(filters_names):
    """
    method converts user's inputed filters names into
    real filters class names
    """
    if filters_names[0] == ALL_FILTERS or filters_names == ALL_FILTERS:
        return get_filters_long_names()
    real_filters_names = []
    real_names = [(real_name, real_name.lower(), ) \
                  for real_name in get_filters_long_names()]
    lower_names = [(name.lower(), name.lower() + 'filter', ) \
                   for name in get_as_list(filters_names)]
    for (filter_lower_name, filter_base_name) in lower_names:
        for (real_name, real_lower_name) in real_names:
            if  real_lower_name in (filter_lower_name, filter_base_name):
                real_filters_names.append(real_name)
                break
        else:
            print('Uknown filter: ' + filter_lower_name)
            return []
    return real_filters_names
Пример #7
0
def expand_to_real_class_names(short_classes_names, _base_class,
                               _class_suffix=''):
    """
    method converts user's inputed classes names into
    real statistics class names
    e.g. _class_suffix = 'statistic'
    """
    real_classes_names = []
    real_names = [(name, name.lower(), )
                    for name in get_subclasses_names(_base_class)]
    lower_names = [(name.lower(), name.lower() + _class_suffix, )  # e.g. _class_suffix = 'statistic' @IgnorePep8
                   for name in get_as_list(short_classes_names)]
    for (class_lower_name, class_base_name) in lower_names:
        for (real_name, real_lower_name) in real_names:
            if real_lower_name in (class_lower_name, class_base_name):
                real_classes_names.append(real_name)
                break
        else:
            print('Uknown class: ' + class_lower_name)
            return []
    return real_classes_names
Пример #8
0
def expand_to_real_filters_names(filters_names):
    """
    method converts user's inputed filters names into
    real filters class names
    """
    if filters_names[0] == ALL_FILTERS or filters_names == ALL_FILTERS:
        return get_filters_long_names()
    real_filters_names = []
    real_names = [(real_name, real_name.lower(), ) \
                  for real_name in get_filters_long_names()]
    lower_names = [(name.lower(), name.lower() + 'filter', ) \
                   for name in get_as_list(filters_names)]
    for (filter_lower_name, filter_base_name) in lower_names:
        for (real_name, real_lower_name) in real_names:
            if real_lower_name in (filter_lower_name, filter_base_name):
                real_filters_names.append(real_name)
                break
        else:
            print('Uknown filter: ' + filter_lower_name)
            return []
    return real_filters_names