def test(): import warnings warnings.simplefilter("ignore") ########################################################################### ############################### Neighs_Info ############################### ### Creation of possible combinations # pos_format_set_info = [None, 'integer', 'list', 'list_only', 'list_list', # 'list_tuple', 'list_tuple1', 'list_tuple2', # 'array', 'slice', 'tuple', 'tuple_int', # 'tuple_slice', 'tuple_tuple', 'tuple_others'] ############################# USEFUL FUNCTIONS ############################ joinpos = lambda x, y: x ### Creation of possible inputs creator_lvl = lambda lvl: tuple(np.random.randint(1, 10, int(lvl))) creator2_lvl = lambda sh: tuple(list(sh) + [np.random.randint(5)]) extend_list = lambda lista, n: [lista for i in range(n)] extend_array = lambda array, n: np.array([array for i in range(n)]) neighs0 = lambda: np.random.randint(100) sp_rel_pos0 = lambda: np.random.random() def create_neighs(sh, type_): neighs = neighs0() for i in range(len(sh)): if type_ == 'array': neighs = extend_array(neighs, sh[len(sh)-i-1]) else: neighs = extend_list(neighs, sh[len(sh)-i-1]) # if type(neighs) == int: # if type_ == 'array': # neighs = np.array([neighs]) # else: # neighs = [neighs] return neighs def create_sp_rel_pos(sh, type_): sp_rel_pos = np.array([sp_rel_pos0() for i in range(np.random.randint(1, 4))]) for i in range(len(sh)): if type_ == 'array': sp_rel_pos = extend_array(sp_rel_pos, sh[len(sh)-i-1]) else: sp_rel_pos = extend_list(sp_rel_pos, sh[len(sh)-i-1]) if len(sh) == 0: if type_ == 'list': sp_rel_pos = list(sp_rel_pos) return sp_rel_pos # neighs_int = lambda: np.random.randint(100) # neighs_list = lambda x: list([neighs_int() for i in range(x)]) # neighs_array = lambda x: np.array([neighs_int() for i in range(x)]) neighs_slice = lambda top: slice(0, top) def creation_neighs_nfo(p, sh, k_len, nei_len): ## Presetting sh_static = sh if len(sh_static) == 3: sh_static = list(sh_static) sh_static[0] = k_len sh_static = tuple(sh_static) # if p[0] is True: # basic_sh = [] if len(sh) == 0 else [1] # sh_static = tuple(basic_sh+[sh[i] for i in range(1, len(sh))]) # Neighs creation if p[6] == 'slice': neighs = neighs_slice(nei_len) else: # Use type_neighs and level neighs = create_neighs(sh_static, p[6]) # Sp_rel_pos sp_rel_pos = create_sp_rel_pos(sh_static, p[7]) if p[7] == 'list': # print type(sp_rel_pos), p, sh assert(type(sp_rel_pos) == list) ## Create structure p[4], p[6], p[7] None # Create structure if p[4] == 'raw': neighs_nfo = neighs elif p[4] == 'tuple': neighs_nfo = (neighs, np.arange(k_len)) elif p[4] == 'tuple_only': neighs_nfo = (neighs, sp_rel_pos) elif p[4] == 'tuple_tuple': neighs_nfo = ((neighs, sp_rel_pos), np.arange(k_len)) elif p[4] == 'list_tuple_only': neighs_nfo = [(neighs, sp_rel_pos) for i in range(k_len)] elif p[4] == 'tuple_list_tuple': neighs_nfo = ([(neighs, sp_rel_pos) for i in range(k_len)], range(k_len)) else: neighs_nfo = neighs return neighs_nfo ########################################################################### pos_ifdistance = [True, False, None] pos_constant_neighs = [True, False, None] pos_format_get_k_info = [None, "general", "default", "list", "integer"] pos_format_get_info = [None, "default", "general"] pos_type_neighs = [None, 'general', 'array', 'list', 'slice'] pos_type_sp_rel_pos = [None, 'general', 'array', 'list'] pos_format_level = [None, 0, 1, 2, 3] pos_format_structure = [None, 'raw', 'tuple', 'tuple_only', 'tuple_tuple', 'list_tuple_only', 'tuple_list_tuple'] pos_staticneighs = [None, True, False] pos = [pos_constant_neighs, pos_ifdistance, pos_format_get_info, pos_format_get_k_info, pos_format_structure, pos_format_level, pos_type_neighs, pos_type_sp_rel_pos, pos_staticneighs] ############################### ############################### level_dependent = ['list_tuple_only', 'tuple_list_tuple'] ### Testing possible combinations k = 0 for p in product(*pos): ## General instantiation. It has to be able to eat any input neighs_info_general = Neighs_Info() ## Defintiion of forbidden combinations bool_error = p[4] in level_dependent and p[5] != 2 # bool_error = bool_error or p[2] == "default" or p[3] == "default" ## Testing raising errors of forbidden combinations: if bool_error: try: boolean = False neighs_info = Neighs_Info(constant_neighs=p[0], ifdistance=p[1], format_get_info=p[2], format_get_k_info=p[3], format_structure=p[4], format_level=p[5], type_neighs=p[6], type_sp_rel_pos=p[7], staticneighs=p[8]) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") continue ## Avoid non-allowed if p[2] == "default" or p[3] == "default": continue if p[4] == 'list_tuple_only' and p[0]: continue tupletypes = ['tuple', 'tuple_only', 'tuple_tuple', 'list_tuple_only', 'tuple_list_tuple'] if p[6] == 'slice' and p[4] in tupletypes: continue if not p[8] and p[6] == 'slice': continue ## TESTING: if p[3] == 'integer': continue # print p ## Save effort if p[4] == 'tuple': if np.random.random() < 0.9: continue ## Instantiation neighs_info = Neighs_Info(constant_neighs=p[0], ifdistance=p[1], format_get_info=p[2], format_get_k_info=p[3], format_structure=p[4], format_level=p[5], type_neighs=p[6], type_sp_rel_pos=p[7], staticneighs=p[8]) neighs_info.set_information(100, 100) lvl = np.random.randint(4) if p[5] is None else p[5] sh = creator_lvl(lvl) iss_len = sh[len(sh)-2] if len(sh) > 1 else np.random.randint(1, 100) k_len = sh[0] if len(sh) == 3 else np.random.randint(1, 9) nei_len = sh[-1] if len(sh) > 0 else np.random.randint(100) neighs_nfo = creation_neighs_nfo(p, sh, k_len, nei_len) neighs_info.set(neighs_nfo, range(iss_len)) ks = [0] if neighs_info.ks is None else neighs_info.ks neighs_info.get_information(ks) ## Special cases # Slice type if p[6] == 'slice' and p[4] == 'raw': neighs_info.set(5, range(iss_len)) neighs_info.set((2, 6), range(iss_len)) neighs_info.set(None, range(iss_len)) # Important general functions neighs_info.any() neighs_info.empty() neighs_info.shape neighs_info._get_neighs_general() neighs_info._general_get_rel_pos() neighs_info.get_copy_iss([neighs_info.iss[0]]) neighs_info.get_copy_iss(neighs_info.iss[0]) neighs_info.get_copy_iss_by_ind([0]) neighs_info.get_copy_iss_by_ind(0) neighs_info.reset_functions() if p[6] == 'slice': neighs_info._get_neighs_general() # Reset structure if p[4] not in ['list_tuple_only', 'tuple_list_tuple']: # Rewrite level problems avoiding neighs_info.reset_level(p[5]) neighs_info.reset_structure(p[4]) neighs_info_general.set(neighs_nfo, range(iss_len)) ## Testing joining logi = neighs_info.ifdistance and neighs_info.sp_relative_pos is None if np.random.random() < 0.1: if logi or type(neighs_info.idxs) == slice: try: boolean = False mode = ['and', 'or', 'xor'][np.random.randint(0, 3)] neighs_info.join_neighs(neighs_info, mode, joinpos) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") else: neighs_info.join_neighs(neighs_info, 'and', joinpos) neighs_info.join_neighs(neighs_info, 'or', joinpos) neighs_info.join_neighs(neighs_info, 'xor', joinpos) join_neighsinfo_AND_general(neighs_info, neighs_info, joinpos) join_neighsinfo_OR_general(neighs_info, neighs_info, joinpos) join_neighsinfo_XOR_general(neighs_info, neighs_info, joinpos) neighs_nfo2 = creation_neighs_nfo(p, sh, k_len, nei_len) neighs_info2 = neighs_info.copy() neighs_info2.set(neighs_nfo2, range(iss_len)) neighs_info2.sp_relative_pos = neighs_info.sp_relative_pos neighs_info.join_neighs(neighs_info2, 'and', joinpos) neighs_info.join_neighs(neighs_info2, 'or', joinpos) neighs_info.join_neighs(neighs_info2, 'xor', joinpos) join_neighsinfo_AND_general(neighs_info, neighs_info2, joinpos) join_neighsinfo_OR_general(neighs_info, neighs_info2, joinpos) join_neighsinfo_XOR_general(neighs_info, neighs_info2, joinpos) ## Set ks if neighs_info.staticneighs: neighs_info.set_ks(range(10)) else: neighs_info.set_ks(range(neighs_info.shape[2])) ## Testing joinning if p[6] != 'slice': neis = [neighs_info.copy() for s in range(5)] ilen = 0 for s in range(5): ilen += len(neis[s].iss) new_neis = join_by_iss(neis) assert(len(new_neis.iss) == ilen) assert(neighs_info.staticneighs == new_neis.staticneighs) assert(neighs_info.ks == new_neis.ks) join_by_iss([neighs_info]) k += 1 # print '-'*20, k #* integer {neighs} neighs_info = Neighs_Info() neighs_info.shape try: boolean = False neighs_info._default_get_neighs() boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False neighs_info._default_get_information() boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") neighs_info._format_set_iss('int') neighs_info._format_set_iss('list') neighs_info._format_set_iss('null') neighs_info = Neighs_Info() neighs_info.set_information(10, 10) neighs_info.set(5) neighs_info.set(([0], [5.])) #* list of integers {neighs} neighs_info.reset() neighs_info.set_information(10, 10) neighs_info.set([[0, 4]]) try: boolean = False neighs_info._kret = 10 neighs_info._integer_get_k(100000) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") neighs_info._get_neighs_list_static() #* list of lists of integers {neighs for some iss} neighs_info.reset() neighs_info.set([[0, 4], [0, 3]]) #* list of lists of lists of integers {neighs for some iss and ks} neighs_info.reset() neighs_info.set([[[0, 4], [0, 3]]]) neighs_info.staticneighs = False neighs_info._array_only_set_rel_pos(np.array([[2], [3]])) neighs_info._general_set_iss(True) neighs_info._set_rel_pos_general_array(np.array([[2], [3]])) neighs_info._set_rel_pos_general_array(np.array([[[[2], [3]]]])) neighs_info._list_list_only_set_rel_pos(np.array([[[5]]])) neighs_info.staticneighs = True neighs_info._general_set_iss(True) neighs_info._set_rel_pos_general_list([[[[2], [3]]]]) neighs_info._general_set_rel_pos(None) try: boolean = False neighs_info._general_set_rel_pos(True) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") #* numpy array 1d, 2d, 3d {neighs} neighs_info = Neighs_Info() neighs_info._set_neighs_general_array(np.array(5)) neighs_info._set_neighs_slice(None) neighs_info.reset() try: boolean = False neighs_info._general_set_neighs(True) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") neighs_info.reset() neighs_info.set(np.array([[[0, 4], [0, 3]]])) neighs_info.staticneighs = False neighs_info._set_rel_pos_dim(5) neighs_info.reset() neighs_info.set(np.array([[0, 4], [0, 3]])) neighs_info.reset() neighs_info.set(np.array([0, 4])) #* tuple of neighs # Empty cases neighs_info.reset() neighs_info.set([[]]) assert(neighs_info.empty()) neighs_info = Neighs_Info(staticneighs=True) neighs_info.set([[]]) neighs_info.reset() try: boolean = False neighs_info._set_tuple_only_structure((range(2), None, 5)) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") neighs_info._set_structure_list([np.array(range(10))]) neighs_info.staticneighs = True # Testing setting rel_pos strange cases neighs_info._general_set_rel_pos(5) neighs_info._set_rel_pos_general_list(np.array([0])) neighs_info._set_rel_pos_general_list(np.array([[0]])) neighs_info._set_rel_pos_general_list(np.array([])) neighs_info._set_rel_pos_general_list(np.array([[]])) neighs_info._set_rel_pos_general_list(np.array([[[]]])) neighs_info._set_rel_pos_number(5) neighs_info.level = 0 neighs_info._set_rel_pos_general_list(np.array([0, 3])) ## Get k neighs_info._kret = 10 neighs_info._integer_get_k([4]) neighs_info._integer_get_k(5) neighs_info._default_get_k() try: boolean = False neighs_info._integer_get_k(100000) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") neighs_info._general_get_k() neighs_info._general_get_k(4) neighs_info._general_get_k(range(2)) ## Set iss neighs_info._general_set_iss(np.array([0])) neighs_info._general_set_iss(np.array([0])) neighs_info._general_set_iss(0) neighs_info._general_set_iss([0]) neighs_info._general_set_iss(range(3)) neighs_info._general_set_iss(5) neighs_info._int_set_iss(8) neighs_info._list_set_iss(range(3)) neighs_info._null_set_iss(5) ## Stress empty tests neighs_info.reset() neighs_info.set(([[]], [[]])) assert(neighs_info.empty()) neighs_info.reset() neighs_info.set(([[], []])) assert(neighs_info.empty()) neighs_info.reset() neighs_info.set([]) assert(neighs_info.empty()) neighs_info.reset() neighs_info.set(([])) assert(neighs_info.empty()) neighs_info.reset() neighs_info.set(([[]], [[]]), [0]) assert(neighs_info.empty()) neighs_info.reset() neighs_info.set(([np.array([])], [np.array([])]), [0]) assert(neighs_info.empty()) neighs_info = Neighs_Info(staticneighs=True) neighs_info._set_neighs_general_array(np.array(5)) neighs_info = Neighs_Info(format_structure='tuple_tuple', type_neighs='list', type_sp_rel_pos='list', format_level=2) neighs_info.set((([np.array([])], [np.array([[]])]), [0])) neighs, _, _, _ = neighs_info.get_information(0) ## Empty assert neighs_info = Neighs_Info() neighs_info.set((([0], [0]), 0)) assert(not neighs_info.empty()) for a, b, c, d in neighs_info: pass ## Check proper outputs # Neighs information neighs_info = Neighs_Info() sh = creator_lvl(3) neighs = np.random.randint(0, 20, np.prod(sh)).reshape(sh) sp_relative_pos = np.random.random((tuple(list(sh)+[3]))) ks = range(sh[0]) iss = range(sh[1]) neighs_info.set((neighs, sp_relative_pos), iss) neighs_info.check_output_standards(neighs, sp_relative_pos, ks, iss) neighs_info2 = Neighs_Info() neighs_info2.set(neighs_info) # Check wrong cases try: boolean = False sh1 = list(sh) sh1[0] = sh[0]+1 sh1 = tuple(sh1) neighs = np.random.randint(0, 20, np.prod(sh1)).reshape(sh1) sp_relative_pos = np.random.random((tuple(list(sh1)+[3]))) neighs_info.check_output_standards(neighs, sp_relative_pos, ks, iss) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False sh1 = list(sh) sh1[1] = sh[1]+1 sh1 = tuple(sh1) neighs = np.random.randint(0, 20, np.prod(sh1)).reshape(sh1) sp_relative_pos = np.random.random((tuple(list(sh1)+[3]))) neighs_info.check_output_standards(neighs, sp_relative_pos, ks, iss) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False neighs_info.check_output_standards(None, sp_relative_pos, ks, iss) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False neighs_info.idxs = None neighs_info.assert_goodness() boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") # Why should be halt? # try: # boolean = False # neighs_info.idxs = [[]] # neighs_info.staticneighs = True # neighs_info.assert_goodness() # boolean = True # raise Exception("It has to halt here.") # except: # if boolean: # raise Exception("It has to halt here.") ## Testing auxiliar functions ############################### neis = np.random.randint(0, 100, 4*5).reshape((5, 2, 2)) pars = inspect_raw_neighs(neis, range(5)) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set((neis, range(5))) assert(len(neighs_info.idxs) == 5) assert(len(neighs_info.idxs[0]) == 2) assert(len(neighs_info.ks) == 5) pars = inspect_raw_neighs(neis[0], 4) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set((neis[0], 4)) assert(neighs_info.staticneighs) assert(len(neighs_info.idxs) == 2) assert(len(neighs_info.ks) == 1) pars = inspect_raw_neighs(range(10), 2) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set((range(10), 2)) assert(neighs_info.staticneighs) assert(len(neighs_info.idxs) == 1) assert(len(neighs_info.idxs[0]) == 10) assert(len(neighs_info.ks) == 1) pars = inspect_raw_neighs(0, range(2)) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set((0, range(2))) assert(neighs_info.staticneighs) assert(len(neighs_info.idxs) == 1) assert(len(neighs_info.ks) == 2) pars = inspect_raw_neighs([], 2) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set(([], 2)) assert(neighs_info.staticneighs) assert(len(neighs_info.idxs) == 1) assert(len(neighs_info.idxs[0]) == 0) assert(len(neighs_info.ks) == 1) pars = inspect_raw_neighs([[]], 2) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set(([[]], 2)) assert(neighs_info.staticneighs) assert(len(neighs_info.idxs) == 1) assert(len(neighs_info.idxs[0]) == 0) assert(len(neighs_info.ks) == 1) pars = inspect_raw_neighs([[[]]]*2, range(2)) pars['format_structure'] = 'tuple_k' neighs_info = Neighs_Info(**pars) neighs_info.set(([[[]]]*2, range(2))) assert(len(neighs_info.idxs) == 2) assert(len(neighs_info.idxs[0]) == 1) assert(len(neighs_info.idxs[0][0]) == 0) assert(len(neighs_info.ks) == 2) neighsinfo_features_preformatting_tuple((neis, range(5)), 8) neighsinfo_features_preformatting_tuple((neis[0], 4), 8) neighsinfo_features_preformatting_tuple((range(10), 2), 8) neighsinfo_features_preformatting_tuple((0, range(2)), 8) neighsinfo_features_preformatting_tuple(([], 2), 8) neighsinfo_features_preformatting_tuple(([[]], 2), 8) neighsinfo_features_preformatting_tuple(([[[]]]*2, range(2)), 8)
def test(): ########################################################################### #### Testing auxiliar resulters ## Functions which helps to manage descriptors and build result measure ## def test_resulter_functions(fm): ## Application of joiner functions creation_concatenator_joiner() creation_null_joiner() ## Creation function tests default_creation_initializations(fm) if all([e is not None for e in fm.shape_measure]): creation_initialization_output_closearray(fm) creation_initialization_output_list(fm) creation_initialization_output_lists(fm) creation_initialization_output_list_selfdriven(fm) creation_initialization_desc_dict(fm) creation_initialization_desc_array(fm) ## Creation of resulters tests resulter = DefaultResulter(fm) GeneralResulter(*resulter.get_functions()) ## Definition parameters n = 1000 rei = 10 n, n_feats = np.random.randint(10, 1000), np.random.randint(1, 20) ks = np.random.randint(1, 20) ########################################################################### ########################## #### FeatureRetriever testing reindices0 = np.arange(n) reindices = np.vstack([reindices0]+[np.random.permutation(n) for i in range(rei-1)]).T perturbation = PermutationPerturbation(reindices) aggcatfeats_dict = categorical_agg_dict_features(n, n_feats, ks) ## Impossible instantiation cases try: # Not valid oject as a feature boolean = False fm = FeaturesManager(None, None) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: # Object not valid as a feature boolean = False avgdesc = AvgDescriptor() fm = FeaturesManager([], avgdesc) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") # try: # boolean = False # Feat_imp = ImplicitFeatures(contfeats_ar0, perturbation) # fm = FeaturesManager(Feat_imp, None) # boolean = True # raise Exception("It has to halt here.") # except: # if boolean: # raise Exception("It has to halt here.") try: # Different k_perturb boolean = False feats0 = ExplicitFeatures(np.random.random((100, 2, 4))) feats1 = ExplicitFeatures(np.random.random((100, 3, 3))) fm = FeaturesManager([feats0, feats1]) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: # Object not valid as a features boolean = False fm = FeaturesManager([5]) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: # Object not valid as a features boolean = False fm = FeaturesManager(lambda x: x) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") feats0 = np.random.random(100) feats1 = np.random.random((100, 1)) feats2 = np.random.random((100, 1, 1)) feats3 = np.random.random((100, 2)) Feat_imp = ImplicitFeatures(feats1) Feat_imp2 = ImplicitFeatures(feats3, names=[3, 4]) Feat_exp = ExplicitFeatures(aggcatfeats_dict) avgdesc = AvgDescriptor() pos_feats = [feats0, feats1, feats2, Feat_imp, Feat_exp, [feats2, Feat_imp]] pos_mapvals_i = [None, ('matrix', 100, 20)]#, lambda x: x, 'matrix'] pos_map_in = [None, lambda i_info, k: i_info] pos_map_out = [None, lambda self, feats: feats] pos_mode = [None, 'parallel', 'sequential'] pos_desc = [None, avgdesc] possibilities = [pos_feats, pos_map_in, pos_map_out, pos_mapvals_i, pos_mode, pos_desc] ## Random parameter space exploration mapper0 = [None]*3 mapper1 = [(0, 0)]*3 mapper2 = [np.array([np.zeros(100), np.zeros(100)]).T]*3 mapper3 = [lambda idx: (0, 0)]*3 mapper4 = [(0, 0), (0, 0), (1, 0)] pos_mappers = [mapper0, mapper1, mapper2, mapper3, mapper4] ## Information of indices nei_i = Neighs_Info() # nei_i.set(np.random.randint(0, 100, 5).reshape((5, 1, 1))) nei_i.set(np.random.randint(0, 100)) nei_info = Neighs_Info() nei_info.set(np.random.randint(0, 100, 20).reshape((5, 2, 2))) ## Combinations for p in product(*possibilities): # ## Random exploration of parameters # feats = pos_feats[np.random.randint(0, len(pos_feats))] # m_input = pos_map_in[np.random.randint(0, len(pos_map_in))] # m_out = pos_map_out[np.random.randint(0, len(pos_map_out))] # m_vals_i = pos_mapvals_i[np.random.randint(0, len(pos_mapvals_i))] # mode = pos_mode[np.random.randint(0, len(pos_mode))] # desc = pos_desc[np.random.randint(0, len(pos_desc))] ## Exhaustive exploration of parameters i_selector = np.random.randint(0, len(pos_mappers)) selectors = pos_mappers[i_selector] if i_selector == 4: continue #print i_selector feats, m_input, m_out, m_vals_i, mode, desc = p ## Instantiation fm = FeaturesManager(feats, maps_input=m_input, maps_output=m_out, maps_vals_i=m_vals_i, mode=mode, descriptormodels=desc, selectors=selectors) ## Basic parameters i0, i1 = 0, range(4) k_p = fm.k_perturb+1 nei_info0 = Neighs_Info() nei_info1 = Neighs_Info() neis = np.random.randint(0, 100, 8*k_p).reshape((k_p, 4, 2)) neis0 = np.random.randint(0, 100, 2*k_p).reshape((k_p, 1, 2)) nei_info0.set(neis0) nei_info1.set(neis) ## Check basic functions fm[0] fm.shape len(fm) fm.set_map_vals_i(m_vals_i) fm.initialization_desc() fm.initialization_output() fm.set_map_vals_i(100) fm.set_map_vals_i(m_vals_i) fm.set_descriptormodels(desc) ## Check basic functions fm.get_type_feats(0) fm.get_type_feats(50) fm.get_type_feats(0, tuple([(0, 0)]*3)) fm.get_type_feats(50, tuple([(0, 0)]*3)) # fm.get_type_feats(i0) # fm.get_type_feats(i1) t_feat_in, t_feat_out, t_feat_des = fm.get_type_feats(50) tf_in0, tf_out0, tf_desc0 = fm.get_type_feats(i0) tf_in1, tf_out1, tf_desc1 = fm.get_type_feats(i1) ## Interaction with featuresObjects # Input fm._get_input_features(50, k=range(k_p), typefeats=t_feat_in) if i_selector == 0: fm._get_input_features([50], k=range(k_p), typefeats=[(0, 0)]) desc_i0 = fm._get_input_features(i0, k=range(k_p), typefeats=tf_in0) desc_i1 = fm._get_input_features(i1, k=range(k_p), typefeats=tf_in1) # print feats, len(desc_i0), k_p # print fm._get_input_features, desc_i0, desc_i1 assert(len(desc_i0) == k_p) assert(len(desc_i1) == k_p) assert(len(desc_i0[0]) == 1) assert(len(desc_i1[0]) == 4) # Output fm._get_output_features(range(10), k=range(k_p), typefeats=t_feat_out) fm._get_output_features(neis[0], k=range(k_p), typefeats=t_feat_out) fm._get_output_features(neis, k=range(k_p), typefeats=t_feat_out) if i_selector == 0: fm._get_output_features([50], k=range(k_p), typefeats=[(0, 0)]) desc_nei0 = fm._get_output_features(nei_info0, range(k_p), tf_out0) desc_nei1 = fm._get_output_features(nei_info1, range(k_p), tf_out1) # print fm._get_output_features assert(len(desc_nei0) == k_p) assert(len(desc_nei1) == k_p) assert(len(desc_nei0[0]) == 1) assert(len(desc_nei1[0]) == 4) # print desc_i0, desc_i1, desc_nei # print type(desc_i0), type(desc_i1), type(desc_nei) # print len(desc_i0), len(desc_i1), len(desc_nei) ## Interaction with map_vals_i fm._get_vals_i(20, range(k_p)) fm._get_vals_i(range(20), range(k_p)) vals_i0 = fm._get_vals_i(i0, range(k_p)) vals_i1 = fm._get_vals_i(i1, range(k_p)) # print fm._get_vals_i, vals_i0, vals_i1 assert(len(vals_i0) == k_p) assert(len(vals_i1) == k_p) assert(len(vals_i0[0]) == 1) assert(len(vals_i1[0]) == 4) ## Completing features fm._complete_desc_i(i0, nei_info0, desc_i0, desc_nei0, vals_i0, tf_desc0) fm._complete_desc_i(i1, nei_info1, desc_i1, desc_nei1, vals_i1, tf_desc1) fm._complete_desc_i(i0, nei_info0, desc_i0, desc_nei0, vals_i0, (1, 0)) fm._complete_desc_i(i1, nei_info1, desc_i1, desc_nei1, vals_i1, (1, 0)) ## Computing altogether fm.compute_descriptors(i0, nei_info0) fm.compute_descriptors(i1, nei_info1) fm.compute_descriptors(i0, nei_info0, range(k_p)) fm.compute_descriptors(i1, nei_info1, range(k_p)) # fm.compute_descriptors(i0, range(10), range(k_p)) # fm.compute_descriptors(i1, range(10), range(k_p)) fm.compute_descriptors(i0, neis0[0], range(k_p)) fm.compute_descriptors(i1, neis[0], range(k_p)) fm.compute_descriptors(i0, neis0, range(k_p)) fm.compute_descriptors(i1, neis, range(k_p)) if i_selector == 0: fm.compute_descriptors([50], neis0[0], k=range(k_p), feat_selectors=[tuple([(0, 0)]*3)]) # Strange cases if mode is None: FeaturesManager([ImplicitFeatures(feats1), ImplicitFeatures(feats3, names=[3, 4])], mode=mode) ## Test resulter functions test_resulter_functions(fm) ## Cases feats = [ImplicitFeatures(feats1), ImplicitFeatures(feats1)] fm = FeaturesManager(feats, maps_input=m_input, maps_output=m_out, maps_vals_i=m_vals_i, mode=mode, descriptormodels=desc, selectors=selectors) if all([fea.typefeat == 'implicit' for fea in fm.features]): fm.add_perturbations(perturbation) ## Impossible function cases feats = [ImplicitFeatures(feats1), ImplicitFeatures(feats3, names=[3, 4])] try: ## Different variablesnames for sequential mode boolean = False fm = FeaturesManager(feats, maps_input=m_input, maps_output=m_out, maps_vals_i=m_vals_i, mode='sequential', descriptormodels=desc, selectors=selectors) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False fm[-1] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") ########################################################################### #### Testing auxiliar parsing ## Functions which carry the uniformation of inputs from possible ways to ## input features information. ## feats0 = np.random.randint(0, 10, 100) feats1 = feats0.reshape((100, 1)) feats2 = np.random.random((100, 2, 3)) desc = DummyDescriptor() pars_feats = {} # Testing combinations of possible inputs feats_info = feats0 features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = feats1 features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = feats2 features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = (feats0, pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = (feats1, pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = (feats2, pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = (feats0, pars_feats, desc) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = (feats1, pars_feats, desc) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = (feats2, pars_feats, desc) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) features_ret = _features_parsing_creation(features_obj) assert(isinstance(features_ret, FeaturesManager)) features_ret = _features_parsing_creation([features_obj]) assert(isinstance(features_ret, FeaturesManager)) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) pars_feats = {} feats_info = (features_obj, pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = ([features_obj], pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = (features_obj, pars_feats, desc) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = (features_obj, pars_feats, [desc, desc]) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = ((feats0, {}), pars_feats) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = ((feats0, {}), pars_feats, desc) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = ((feats0, {}), pars_feats, [desc, desc]) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) pars_feats = {} feats_info = ((feats0, {}, desc), pars_feats, [desc, desc]) features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) feats_info = features_ret features_ret = _features_parsing_creation(feats_info) assert(isinstance(features_ret, FeaturesManager)) features_ret = _featuresmanager_parsing_creation(features_obj) assert(isinstance(features_ret, FeaturesManager)) features_ret = _featuresmanager_parsing_creation(features_ret) assert(isinstance(features_ret, FeaturesManager)) feats_info = ((feats0, {}, desc), {}) features_ret = _featuresmanager_parsing_creation(features_ret) assert(isinstance(features_ret, FeaturesManager)) feats_info = ((feats0, {}, desc), {}, [desc, desc]) features_ret = _featuresmanager_parsing_creation(features_ret) assert(isinstance(features_ret, FeaturesManager))
def test_getfeatsk(Feat): nei = Neighs_Info() nei.set((([0], [0]), [0])) i, d, _, k = 0 pass
def test_getitem(Feat): #k = 0 #idxs = np.random.randint(0, 5, 20).reshape((1, 4, 5)) #Feat._get_feats_k(idxs, k) #Feat._get_feats_k(list(idxs), k) #Feat[[]] feat = Feat[0] assert(len(feat[0]) == 1) assert(len(feat) == Feat.k_perturb+1) feat = Feat[(0, 0)] assert(len(feat[0]) == 1) assert(len(feat) == 1) feat = Feat[([0], [0])] assert(len(feat[0]) == 1) assert(len(feat) == 1) # INVALID # feat = Feat[([0], [0.])] # assert(len(feat[0]) == 1) # assert(len(feat) == Feat.k_perturb+1) feat = Feat[range(5), [0]] assert(len(feat[0]) == 5) assert(len(feat) == 1) feat = Feat[0:3] assert(len(feat[0]) == 3) assert(len(feat) == Feat.k_perturb+1) feat = Feat[:] # print len(feat[0]), len(Feat) assert(len(feat[0]) == len(Feat)) assert(len(feat) == Feat.k_perturb+1) feat = Feat[((0, 0), 0)] assert(len(feat[0]) == 1) assert(len(feat) == 1) feat = Feat[(([0], [0]), [0])] assert(len(feat[0]) == 1) assert(len(feat) == 1) Feat[[[[]]], [0]] if Feat.k_perturb: # print 'x'*100, Feat.k_perturb, Feat.shape Feat[(([[0], [0]], [[0], [0]]), [0, 1])] feat = Feat[[0, 4, 5]] assert(len(feat[0]) == 3) assert(len(feat) == Feat.k_perturb+1) try: boolean = False Feat[-1] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat._retrieve_feats([[[0]]], -1, None) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat._retrieve_feats([[[0]]], 10000, None) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat[len(Feat)] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat[range(4), range(Feat.k_perturb+3)] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") nei = Neighs_Info() nei.set((([0], [0]), [0])) Feat[nei] nei = Neighs_Info() nei.set([[[0, 4], [0, 3]]]) Feat[nei] nei = Neighs_Info(staticneighs=True) nei.set([[0, 4], [0, 3]]) Feat[nei, 0] # shape Feat.shape ## Empty call Feat[(([[]], [[]]), [0])] # Descriptormodels setting # null formatters #Feat._format_characterizer(None, None) if Feat.typefeat != 'phantom': Feat.set_descriptormodel(dum1desc) if Feat.typefeat == 'implicit': Feat.set_descriptormodel(dum2desc) else: Feat.set_descriptormodel(dum2desc_agg) avgdesc = AvgDescriptor() Feat.set_descriptormodel(avgdesc) ## Export features feat_o, feat_info, feat_pars = Feat.export_features() new_feats = feat_o(feat_info, **feat_pars) assert(isinstance(new_feats, feat_o))
def test(): ## Definition parameters n = 1000 m = 5 rei = 10 n, n_feats = np.random.randint(10, 1000), np.random.randint(1, 20) n_feats2 = [np.random.randint(1, 20) for i in range(n_feats)] ks = np.random.randint(1, 20) def create_ids(n1): aux = np.random.randint(1, 4, n1) return np.cumsum(aux) def create_featurenames(n1): aux = create_ids(n1) return [str(e) for e in aux] def extract_featurenames_agg(aggdictfeats): names = [] for k in range(len(aggdictfeats)): names += extract_featurenames(aggdictfeats[k]) names = list(set(names)) return names def extract_featurenames(aggdictfeats): names = [] for i in range(len(aggdictfeats)): names += aggdictfeats[i].keys() names = list(set(names)) return names def compute_featurenames(features): names = [] if type(features) == np.ndarray: names = [str(e) for e in range(len(features[0]))] return names class DummyDesc: def set_functions(self, typefeatures, outformat): pass class Dummy1Desc(DummyDesc): def __init__(self): self.compute = lambda x, d: [e[0] for e in x] self._out_formatter = lambda x, y1, y2, y3: x self._f_default_names = compute_featurenames class Dummy2Desc_exp(DummyDesc): def __init__(self): self.compute = lambda x, d: [e[0] for e in x] self._out_formatter = lambda x, y1, y2, y3: x self._f_default_names = compute_featurenames class Dummy2Desc_imp(DummyDesc): def __init__(self): self.compute = lambda x, d: np.array([e[0] for e in x]) self._out_formatter = lambda x, y1, y2, y3: x self._f_default_names = compute_featurenames ## Possible descriptormodels to test avgdesc = AvgDescriptor() dum1desc = Dummy1Desc() dum2desc = Dummy2Desc_imp() dum2desc_agg = Dummy2Desc_exp() ### Test functions definitions def test_getfeatsk(Feat): nei = Neighs_Info() nei.set((([0], [0]), [0])) i, d, _, k = 0 pass def test_getitem(Feat): #k = 0 #idxs = np.random.randint(0, 5, 20).reshape((1, 4, 5)) #Feat._get_feats_k(idxs, k) #Feat._get_feats_k(list(idxs), k) #Feat[[]] feat = Feat[0] assert(len(feat[0]) == 1) assert(len(feat) == Feat.k_perturb+1) feat = Feat[(0, 0)] assert(len(feat[0]) == 1) assert(len(feat) == 1) feat = Feat[([0], [0])] assert(len(feat[0]) == 1) assert(len(feat) == 1) # INVALID # feat = Feat[([0], [0.])] # assert(len(feat[0]) == 1) # assert(len(feat) == Feat.k_perturb+1) feat = Feat[range(5), [0]] assert(len(feat[0]) == 5) assert(len(feat) == 1) feat = Feat[0:3] assert(len(feat[0]) == 3) assert(len(feat) == Feat.k_perturb+1) feat = Feat[:] # print len(feat[0]), len(Feat) assert(len(feat[0]) == len(Feat)) assert(len(feat) == Feat.k_perturb+1) feat = Feat[((0, 0), 0)] assert(len(feat[0]) == 1) assert(len(feat) == 1) feat = Feat[(([0], [0]), [0])] assert(len(feat[0]) == 1) assert(len(feat) == 1) Feat[[[[]]], [0]] if Feat.k_perturb: # print 'x'*100, Feat.k_perturb, Feat.shape Feat[(([[0], [0]], [[0], [0]]), [0, 1])] feat = Feat[[0, 4, 5]] assert(len(feat[0]) == 3) assert(len(feat) == Feat.k_perturb+1) try: boolean = False Feat[-1] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat._retrieve_feats([[[0]]], -1, None) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat._retrieve_feats([[[0]]], 10000, None) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat[len(Feat)] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat[range(4), range(Feat.k_perturb+3)] boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") nei = Neighs_Info() nei.set((([0], [0]), [0])) Feat[nei] nei = Neighs_Info() nei.set([[[0, 4], [0, 3]]]) Feat[nei] nei = Neighs_Info(staticneighs=True) nei.set([[0, 4], [0, 3]]) Feat[nei, 0] # shape Feat.shape ## Empty call Feat[(([[]], [[]]), [0])] # Descriptormodels setting # null formatters #Feat._format_characterizer(None, None) if Feat.typefeat != 'phantom': Feat.set_descriptormodel(dum1desc) if Feat.typefeat == 'implicit': Feat.set_descriptormodel(dum2desc) else: Feat.set_descriptormodel(dum2desc_agg) avgdesc = AvgDescriptor() Feat.set_descriptormodel(avgdesc) ## Export features feat_o, feat_info, feat_pars = Feat.export_features() new_feats = feat_o(feat_info, **feat_pars) assert(isinstance(new_feats, feat_o)) ## Definition arrays aggfeatures = np.random.random((n/2, m, rei)) features0 = np.random.random((n, m)) features1 = np.random.random((n, m)) features2 = np.vstack([np.random.randint(0, 10, n) for i in range(m)]).T reindices0 = np.arange(n) reindices = np.vstack([reindices0]+[np.random.permutation(n) for i in range(rei-1)]).T perturbation = PermutationPerturbation(reindices) ########################################################################### ########################## #### Explicit Features testing ### Definition classes # Instantiation Feat = ExplicitFeatures(np.random.randint(0, 20, 100)) test_getitem(Feat) Feat = ExplicitFeatures(np.random.random((100, 2))) test_getitem(Feat) Feat = ExplicitFeatures(aggfeatures) test_getitem(Feat) try: boolean = False ExplicitFeatures(np.random.random((10, 1, 1, 1))) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It should not accept that inputs.") ## Exhaustive instantiation testing aggcontfeats_ar0 = continuous_agg_array_features(n, n_feats, ks) aggcatfeats_ar0 = categorical_agg_array_features(n, n_feats, ks) aggcatfeats_ar1 = categorical_agg_array_features(n, n_feats2, ks) aggcontfeats_dict = continuous_agg_dict_features(n, n_feats, ks) aggcatfeats_dict = categorical_agg_dict_features(n, n_feats, ks) pos_feats = [aggcontfeats_ar0, aggcatfeats_ar0, aggcatfeats_ar1, aggcontfeats_dict, aggcatfeats_dict] pos_names = [create_featurenames(n_feats), create_featurenames(1), create_featurenames(len(n_feats2)), create_featurenames(n_feats), extract_featurenames_agg(aggcontfeats_dict), extract_featurenames_agg(aggcatfeats_dict)] pos_nss = [0, 1, 2, 3, 4] pos_null = [None, 0., np.inf] pos_characterizer = [None] # pos_outformatter = [None] pos_indices = [None] possibilities = [pos_nss, pos_null, pos_characterizer, pos_indices] for p in product(*possibilities): # print p ## Names definition names = [] if np.random.randint(0, 2): names = pos_names[p[0]] ## Instantiation Feat = ExplicitFeatures(pos_feats[p[0]], descriptormodel=p[2], names=names, indices=p[3], nullvalue=p[1]) ## Testing main functions test_getitem(Feat) ## Particular cases try: boolean = False names = [str(i) for i in range(len(aggcontfeats_ar0[0])+1)] ExplicitFeatures(aggcontfeats_ar0, names=names, indices=p[3], descriptormodel=p[2], nullvalue=p[1]) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") ## ## List features listfeatures = [] for k in range(5): listfeatures_k = [] for i in range(100): aux = np.unique(np.random.randint(0, 100, np.random.randint(5))) d = dict(zip(aux, np.random.random(len(aux)))) listfeatures_k.append(d) listfeatures.append(listfeatures_k) Feat = ExplicitFeatures(listfeatures) len(Feat) nei = Neighs_Info() nei.set((([0], [0]), [0])) Feat[nei] nei = Neighs_Info() nei.set([[[0, 4], [0, 3]]]) Feat[nei] ########################################################################### ########################## #### Implicit Features testing ### Definition classes # Instantiation contfeats_ar0 = continuous_array_features(n, n_feats) catfeats_ar0 = categorical_array_features(n, n_feats) catfeats_ar1 = categorical_array_features(n, n_feats2) contfeats_dict = continuous_dict_features(n, n_feats) catfeats_dict = categorical_dict_features(n, n_feats) pos_feats = [contfeats_ar0, catfeats_ar0, catfeats_ar1, contfeats_dict, catfeats_dict] pos_names = [create_featurenames(n_feats), create_featurenames(1), create_featurenames(len(n_feats2)), create_featurenames(n_feats), extract_featurenames(contfeats_dict), extract_featurenames(catfeats_dict)] pos_nss = [0, 1, 2, 3, 4] pos_null = [None] # TODO: [None, 0., np.inf] pos_characterizer = [None] # pos_outformatter = [None] pos_indices = [None] # TODO pos_perturbations = [None, perturbation] possibilities = [pos_nss, pos_null, pos_characterizer, pos_indices, pos_perturbations] ## Combination of inputs testing for p in product(*possibilities): # print p ## Names definition names = [] if np.random.randint(0, 2): names = pos_names[p[0]] ## Instantiation Feat = ImplicitFeatures(pos_feats[p[0]], names=names, descriptormodel=p[2], perturbations=p[4]) ## Testing main functions # if p[0] < 3: # test_getitem(Feat) test_getitem(Feat) Feat_imp = ImplicitFeatures(contfeats_ar0, perturbations=perturbation) test_getitem(Feat_imp) Feat_imp = ImplicitFeatures(catfeats_ar0, perturbations=perturbation) test_getitem(Feat_imp) Feat_imp = ImplicitFeatures(catfeats_ar0.ravel(), perturbations=perturbation, names=[0]) test_getitem(Feat_imp) Feat_imp = ImplicitFeatures(catfeats_ar1, perturbations=perturbation) test_getitem(Feat_imp) Feat_imp = ImplicitFeatures(contfeats_dict, perturbations=perturbation) # test_getitem(Feat_imp) Feat_imp = ImplicitFeatures(catfeats_dict, perturbations=perturbation) # test_getitem(Feat_imp) try: boolean = False Feat = ImplicitFeatures(contfeats_ar0, perturbations=None) Feat._map_perturb(-1) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat = ImplicitFeatures(contfeats_ar0, perturbations=perturbation) Feat._map_perturb(-1) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") try: boolean = False Feat = ImplicitFeatures(contfeats_ar0, perturbations=perturbation) Feat._map_perturb(1000) boolean = True raise Exception("It has to halt here.") except: if boolean: raise Exception("It has to halt here.") ########################################################################### ########################## #### Phantom Features testing ### Definition classes # Instantiation pos_fea_info = [(100, 25)] pos_perturbations = [None, perturbation] pos_names = [[]] pos_outfeats = [[]] pos_characterizer = [None, ] # pos_outformatter = [None] possibilities = [pos_fea_info, pos_perturbations, pos_names, pos_outfeats, pos_characterizer] ## Combination of inputs testing for p in product(*possibilities): # print p fe = PhantomFeatures(features_info=p[0], perturbations=p[1], names=p[2], out_features=p[3], descriptormodel=p[4]) test_getitem(fe) ########################################################################### #### Testing auxiliar parsing feats0 = np.random.randint(0, 10, 100) feats1 = feats0.reshape((100, 1)) feats2 = np.random.random((100, 2, 3)) desc = DummyDescriptor() pars_feats = {} # Testing combinations of possible inputs feats_info = feats0 features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = feats1 features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = feats2 features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats0, pars_feats) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats1, pars_feats) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats2, pars_feats) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats0, pars_feats, desc) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats1, pars_feats, desc) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) feats_info = (feats2, pars_feats, desc) features_obj = _featuresobject_parsing_creation(feats_info) assert(isinstance(features_obj, BaseFeatures)) features_obj = _featuresobject_parsing_creation(features_obj) assert(isinstance(features_obj, BaseFeatures))