Miscellaneous utility functions.
-
pebl.util.as_list(c)¶ Ensures that the result is a list.
If input is a list/tuple/set, return it. If it’s None, return empty list. Else, return a list with input as the only element.
-
pebl.util.autoassign(self, locals)¶ Automatically assigns local variables to self. Generally used in __init__ methods, as in:
def __init__(self, foo, bar, baz=1): autoassign(self, locals())
-
pebl.util.cartesian_product(list_of_lists)¶ Given n lists (or sets), generate all n-tuple combinations.
>>> list(cartesian_product([[0,1], [0,1,"foo"]])) [(0, 0), (0, 1), (0, 'foo'), (1, 0), (1, 1), (1, 'foo')]
>>> list(cartesian_product([[0,1], [0,1], [0,1]])) [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
-
pebl.util.cond(condition, expr1, expr2)¶ Marked for deletion.. Python2.5 provides this.
-
pebl.util.edit_distance(network1, network2)¶ Returns the edit distance between two networks.
This is a good (but not the only one) metric for determining similarity between two networks.
-
pebl.util.entropy_of_list(lst)¶ Given a list of values, generate histogram and calculate the entropy.
-
pebl.util.extended_property(func)¶ Function decorator for defining property attributes
The decorated function is expected to return a dictionary containing one or more of the following pairs:
- fget - function for getting attribute value
- fset - function for setting attribute value
- fdel - function for deleting attribute
-
pebl.util.flatten(seq)¶ Given a nested datastructure, flatten it.
-
pebl.util.levenshtein(a, b)¶ Calculates the Levenshtein distance between strings a and b.
-
pebl.util.logadd(x, y)¶ Adds two log values.
Ensures accuracy even when the difference between values is large.
-
pebl.util.logscale_probwheel(items, logweights)¶ Randomly select an item from a [log] weighted list of items.
Fucntion just rescale logweights and exponentiates before calling probwheel.
-
pebl.util.logsum(lst)¶ Sums a list of log values, ensuring accuracy.
-
pebl.util.lru_cache(maxsize)¶ Decorator applying a least-recently-used cache with the given maximum size.
Arguments to the cached function must be hashable. Cache performance statistics stored in f.hits and f.misses.
-
pebl.util.nestediter(lst1, lst2)¶ A syntactic shortform for doing nested loops.
-
pebl.util.normalize(lst)¶ Normalizes a list of numbers (sets sum to 1.0).
-
pebl.util.probwheel(items, weights)¶ Randomly select an item from a weighted list of items.
-
pebl.util.rescale_logvalues(lst)¶ Rescales a list of log values by setting max value to 0.0
This function is necessary when working with list of log values. Without it, we could have overflows. This is a lot faster than using arbitrary precision math libraries.
-
pebl.util.unzip(l, *jj)¶ Opposite of zip().
jj is a tuple of list indexes (or keys) to extract or unzip. If not specified, all items are unzipped.