Source code for ccobra.helper

""" CCOBRA helper function.

"""

import copy

import numpy as np

[docs]def convert_to_basic_types(elem): """ Converts an element to primitive types. If the element is a list, the inner elements will be converted instead. The preference order is bool > int > float > string. Parameters ---------- elem : Object Element to convert. Returns ------- Object Primitive object representing the given element. """ if isinstance(elem, int): return elem if isinstance(elem, float): return elem if isinstance(elem, bool): return elem if isinstance(elem, list): return [convert_to_basic_types(x) for x in elem] elem = str(elem) if elem == "True": return True if elem == "False": return False try: result = int(elem) return result except ValueError: try: result = float(elem) return result except ValueError: return elem
[docs]def tuple_to_string(tuptup): """ Converts a tuple to its string representation. Uses different separators (';', '/', '|') for different depths of the representation. Parameters ---------- tuptup : list Tuple to convert to its string representation. Returns ------- str String representation of the input tuple. """ def join_deepest(tup, sep=';'): """ Recursive function to create the string representation for the deepest level of the tuptup list. Parameters ---------- tup : object Element to join if list or list of lists. sep : str, optional Separation character to join the list elements by. Returns ------- object List containing joined string in max depth. Str if input depth = 1. """ if not isinstance(tup, list): return str(tup) if not isinstance(tup[0], list): return sep.join([str(x) for x in tup]) for idx, val in enumerate(tup): tup[idx] = join_deepest(val, sep) return tup tup = copy.deepcopy(tuptup) tup = join_deepest(tup, ';') tup = join_deepest(tup, '/') tup = join_deepest(tup, '|') return tup
[docs]def unnest(tup): """ Unnests a nested tuple. If an element is insight nested lists, the function returns the element, otherwise the list is returned. Parameters ---------- tup : list Nested tuples. Returns ------- object Element or list without unneccessary nesting. """ while True: if not isinstance(tup, list): return tup if len(tup) != 1: return tup tup = tup[0]