'Compare two ModelDescription object instances
Arguments:
o1 (ModelDescription, dict): object to compare
o2 (ModelDescription, dict): object to compare
Returns:
bool: true if objects match'

@staticmethod
def match(o1, o2):

    type_o1 = type(o1)
    if (type_o1 is not type(o2)):
        return False
    if (type_o1 is dict):
        if (set(o1.keys()) != set(o2.keys())):
            neon_logger.display('Missing    keys')
            return False
        for key in o1:
            if (key == 'name'):
                return True
            if (not ModelDescription.match(o1[key], o2[key])):
                return False
    elif any([(type_o1 is x) for x in [list, tuple]]):
        if (len(o1) != len(o2)):
            return False
        for (val1, val2) in zip(o1, o2):
            if (not ModelDescription.match(val1, val2)):
                return False
    elif (type_o1 is np.ndarray):
        match = np.array_equal(o1, o2)
        return match
    else:
        return (o1 == o2)
    return True
