Source code for wub.util.parse

# -*- coding: utf-8 -*-

import numpy as np
import six
from collections import OrderedDict

"""Utilities to parse strings into various data sructures."""


[docs]def separated_list_to_floats(separated_list, separator=","): """ Convert a separated list into a list of floats. :param separated_list: A separated list as string. :param separator: List separator. :returns: List of floats. :rtype: list """ return [float(element) for element in separated_list.split(separator)]
[docs]def args_string_to_dict(args_string, elements_separator=",", keyvalue_separator=":"): """ Convert a two-level separated list into a dictionary. :param args_string: Two-level separated string. :param elements_separator: Separator between elements. :param keyvalue_separator: Separator between key/value pairs. :returns: dict :rtype: dict """ if len(args_string) == 0: return {} pairs = [pair.strip() for pair in args_string.split(elements_separator)] elements = OrderedDict(pair.split(keyvalue_separator) for pair in pairs) parsed = OrderedDict((k.strip(), v.strip()) for k, v in six.iteritems(elements)) return parsed
[docs]def interval_string_to_tuples(interval_string, elements_separator="|", interval_separator=","): """ Convert a two-level separated list into a dictionary. :param interval_string: Two-level separated string. :param elements_separator: Separator between elements. :param keyvalue_separator: Separator between interval boundaries. :returns: tuple :rtype: tuple """ if len(interval_string) == 0: return tuple() pairs = [pair.strip() for pair in interval_string.split(elements_separator)] elements = OrderedDict(pair.split(interval_separator) for pair in pairs) parsed = tuple((int(k.strip()), int(v.strip())) for k, v in six.iteritems(elements)) return parsed
[docs]def normalise_array(array): """ Normalise numpy array so the elments sum to 1.0. :param array: Input array. :returns: Normalised array. :rtype: numpy.array """ temporary_array = array.astype(float) return temporary_array / np.sum(temporary_array)