psamm.util – Internal utilities

Various utilities.

class psamm.util.DictView(d)

An immutable wrapper around another dict-like object.

class psamm.util.FrozenOrderedSet(seq=[])

An immutable set that retains insertion order.

class psamm.util.LoggerFile(logger, level)

File-like object that forwards to a logger.

The Cplex API takes a file-like object for writing log output. This class allows us to forward the Cplex messages to the Python logging system.

flush()

Flush stream.

This is a noop.

write(s)

Write message to logger.

class psamm.util.MaybeRelative(s)

Helper type for parsing possibly relative parameters.

>>> arg = MaybeRelative('40%')
>>> arg.reference = 200.0
>>> float(arg)
80.0
>>> arg = MaybeRelative('24.5')
>>> arg.reference = 150.0
>>> float(arg)
24.5
reference

The reference used for converting to absolute value.

relative

Whether the parsed number was relative.

psamm.util.convex_cardinality_relaxed(f, epsilon=1e-05)

Transform L1-norm optimization function into cardinality optimization.

The given function must optimize a convex problem with a weighted L1-norm as the objective. The transformed function will apply the iterated weighted L1 heuristic to approximately optimize the cardinality of the solution. This method is described by S. Boyd, “L1-norm norm methods for convex cardinality problems.” Lecture Notes for EE364b, Stanford University, 2007. Available online at www.stanford.edu/class/ee364b/.

The given function must take an optional keyword parameter weights (dictionary), and the weights must be set to one if not specified. The function must return the non-weighted solution as an iterator over (identifier, value)-tuples, either directly or as the first element of a tuple.

psamm.util.create_unique_id(prefix, existing_ids)

Return a unique string ID from the prefix.

First check if the prefix is itself a unique ID in the set-like parameter existing_ids. If not, try integers in ascending order appended to the prefix until a unique ID is found.

psamm.util.git_try_describe(repo_path)

Try to describe the current commit of a Git repository.

Return a string containing a string with the commit ID and/or a base tag, if successful. Otherwise, return None.

psamm.util.mkdir_p(path)

Make directory path if it does not already exist.