Source code for pomdp_py.utils.misc

"""Misc Python utilities"""

from difflib import SequenceMatcher


[docs] def remap(oldvalue, oldmin, oldmax, newmin, newmax): if oldmax - oldmin == 0: print("Warning in remap: the old range has size 0") oldmax = oldmin + oldvalue return (((oldvalue - oldmin) * (newmax - newmin)) / (oldmax - oldmin)) + newmin
[docs] def json_safe(obj): if isinstance(obj, bool): return str(obj).lower() elif isinstance(obj, (list, tuple)): return [json_safe(item) for item in obj] elif isinstance(obj, dict): return {json_safe(key): json_safe(value) for key, value in obj.items()} else: return str(obj) return obj
[docs] def safe_slice(arr, start, end): true_start = max(0, min(len(arr) - 1, start)) true_end = max(0, min(len(arr) - 1, end)) return arr[true_start:true_end]
[docs] def similar(a, b): # Reference: https://stackoverflow.com/questions/17388213/find-the-similarity-metric-between-two-strings return SequenceMatcher(None, a, b).ratio()
[docs] class special_char: left = "\u2190" up = "\u2191" right = "\u2192" down = "\u2193" longleft = "\u27f5" longright = "\u27f6" hline = "─" vline = "│" bottomleft = "└" longbottomleft = "└─" topleft = "┌" longtopleft = "┌─" topright = "┐" longtopright = "─┐" bottomright = "┘" longbottomright = "─┘" intersect = "┼" topt = "┬" leftt = "├" rightt = "┤" bottomt = "┴" shadebar = "▒" SUBSCRIPT = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")