def getMatrixDirectly_and_feature(ind): import GTree arrays = [] feature = [] prefixnum = 0 features = gol.get_val("feature_method") classes = gol.get_val("classes") MaxDeapth = gol.get_val("maxDeap") New_Ind = GTree.GTreeGP() for i in xrange(len(ind.nodes_list)): if ind.nodes_list[i].getType() == nodeType["NONTERMINAL"]: prefixnum = prefixnum + 1 for j in xrange(0, len(classes)): locals()[classes[j]] = classes[j] New_Ind.setRoot(ind.nodes_list[i]) array = eval(New_Ind.getCompiledCode()) arrays.append(list(array)) else: arrays.append(list(ind.nodes_list[i].getData())) for i in xrange(len(arrays)): for j in xrange(len(features)): if features[j] in arrays[i]: feature.append(features[j]) arrays[i].remove(features[j]) pre_order = ind.nodes_list cem = CEM(MaxDeapth, classes, prefixnum) cem.construct_tree(pre_order, arrays) ecocMatrix = np.array(cem.getMatrix()) feature = np.array(feature) #1.There being a column with all 0 or 1 or -1 deletes = LC.zeroColumn(ecocMatrix) ecocMatrix = np.delete(ecocMatrix, deletes, axis=1) feature = np.delete(feature, deletes, axis=0) #2.There being a column that is lack of 1 or -1 deletes = LC.onlyOneColumn(ecocMatrix) ecocMatrix = np.delete(ecocMatrix, deletes, axis=1) feature = np.delete(feature, deletes, axis=0) #3.Two columns having the same numbers deletes = LC.sameColumns(ecocMatrix, feature) ecocMatrix = np.delete(ecocMatrix, deletes, axis=1) feature = np.delete(feature, deletes, axis=0) #4.Two columns having the opposite numbers deletes = LC.opstColumns(ecocMatrix, feature) ecocMatrix = np.delete(ecocMatrix, deletes, axis=1) feature = np.delete(feature, deletes, axis=0) ############################# return ecocMatrix, feature