def return_vector(self, visitor): listOfChildVectors = [ self.condition.accept(visitor), self.nodeBlock.accept(visitor) ] numOfTimes = int(round(sqrt(len(listOfChildVectors)))) + 1 for x in range(numOfTimes): toBeAppended = deepcopy(listOfChildVectors) listOfChildVectors = listOfChildVectors + toBeAppended from ADT.Visitors.AssigmentComplexityVisitor import AssigmentComplexityVisitor visitorComplexity = AssigmentComplexityVisitor( enviromentWalkerContext()) from ADT.Visitors.RetrieveVariablesFromConditionVisitor import RetrieveVariablesFromConditionVisitor variablesUsedInCondition = RetrieveVariablesFromConditionVisitor( enviromentWalkerContext()) self.condition.accept(visitorComplexity) self.condition.accept(variablesUsedInCondition) visitor.currentArgumentVectorDependency = variablesUsedInCondition.currentArguments # TODO: CONSIDER LOOPS WITHOUT VARIABLES listOfChildVectors += self.condition.accept(visitor) numOfTimes = int(visitorComplexity.complexityOfCurrExpression** NUM_COPY_SUBLIST) + 1 for x in range(numOfTimes): toBeAppended = deepcopy(listOfChildVectors) listOfChildVectors = listOfChildVectors + toBeAppended return listOfChildVectors
def visit_binaryoperator(self, binaryOperator: BinaryOperator): from ADT.Visitors.RetrieveVariablesFromConditionVisitor import RetrieveVariablesFromConditionVisitor variablesUsedInCondition = RetrieveVariablesFromConditionVisitor( enviromentWalkerContext()) if self.isInModifyingVariableState: binaryOperator.leftOperand.accept(variablesUsedInCondition) self.context.dataDependencies[ self.lastAssignedVariable. variableName] += variablesUsedInCondition.currentArguments self.context.dataDependencies[ self.lastAssignedVariable.variableName] = list( set(self.context.dataDependencies[ self.lastAssignedVariable.variableName])) variablesUsedInCondition.reset() binaryOperator.rightOperand.accept(variablesUsedInCondition) self.context.dataDependencies[ self.lastAssignedVariable. variableName] += variablesUsedInCondition.currentArguments self.context.dataDependencies[ self.lastAssignedVariable.variableName] = list( set(self.context.dataDependencies[ self.lastAssignedVariable.variableName])) binaryOperator.leftOperand.accept(self) binaryOperator.rightOperand.accept(self)
def initialize(self, data): self.resolverUtil = ResolverUtil() self.currentVector = 0 self.currentNumOfTable = 0 self.currentNumOfRow = 0 self.argumentChangedVal = 0 self.currentHeuristicValue = 0 self.expressions = {} self.currentHeuristics = [] self.currentVectors = [] self.currentHeuristicRow = [] self.currentVectorRow = [] self.rewarder = StaticRewardCalculator() self.data = resolveRef(data, {}) self.mcdc = data self.logicTable = None self.rootAdtNode = {} self.arguments = {} self.argumentValues = {} self.rootTreeAdtNode = None self.listOfTables = [] self.listOfTableHeuristics = [] self.listOfTableVectors = [] self.context = enviromentWalkerContext() self.getRootADTNode() self.extractFunctionParams() self.getLogicExpressionsFromMcDc() self.parseLoadedJsonIntoTree() self.createListOfMcDcTableRows()
def return_vector(self, visitor): lists = [] from ADT.Visitors.AssigmentComplexityVisitor import AssigmentComplexityVisitor visitorComplexity = AssigmentComplexityVisitor(enviromentWalkerContext()) from ADT.Visitors.RetrieveVariablesFromConditionVisitor import RetrieveVariablesFromConditionVisitor variablesUsedInCondition = RetrieveVariablesFromConditionVisitor(enviromentWalkerContext()) self.value.accept(visitorComplexity) if isinstance(self.variable, VariableNode): self.value.accept(variablesUsedInCondition) visitor.currentArgumentVectorDependency = variablesUsedInCondition.currentArguments + [self.variable.variableName] lists += self.make_vector(visitor) lists += self.value.accept(visitor) numOfTimes = int(visitorComplexity.complexityOfCurrExpression ** NUM_COPY_SUBLIST) + 1 for x in range(numOfTimes): toBeAppended = deepcopy(lists) lists = lists + toBeAppended return lists
def prepareVectorsForRowsConv(self): for table in self.listOfTables: tableRows = [] # Extract values for each column according to one row for row in table: dictForRow = self.mergeDictsInRow(row) self.vectorizationVisitor = SampleVisitorEnv( enviromentWalkerContext(), dictForRow, self.expressions) mainNode = self.rootTreeAdtNode.accept( self.vectorizationVisitor) tableRows.append(mainNode) self.listOfTableVectors.append(tableRows)
def createVectorsForRows(self): for table in self.listOfTables: tableRows = [] # Extract values for each column according to one row for row in table: dictForRow = self.mergeDictsInRow(row) dataDependencyVisitor = DataDependenciesVisitor( enviromentWalkerContext(), dictForRow, self.expressions) self.rootTreeAdtNode.accept(dataDependencyVisitor) self.vectorizationVisitor = VectorizationVisitor( dataDependencyVisitor.context, dictForRow, self.arguments, self.expressions) lists = self.rootTreeAdtNode.accept(self.vectorizationVisitor) lists = [x for x in lists if x != []] numOfTimes = int(round(len(lists))**(1 / 4)) + 1 for x in range(numOfTimes): toBeAppended = deepcopy(lists) lists = lists + toBeAppended tableRows.append(lists) self.listOfTableVectors.append(tableRows)
def reset(self): self.context = enviromentWalkerContext()
def reset(self): self.context = enviromentWalkerContext() self.embedding = 0 self.functionName = "" self.numOfStaticRecursionCalls = 0 self.currentArgumentVectorDependency = []
def reset(self): self.context = enviromentWalkerContext() self.currentArguments = []
import pickle from Environment.enviroment import Enviroment from Environment.enviromentWalkerRedLabel import enviromentWalkerContext from Vectorizer.Sample import SampleVisitor from Vectorizer.train import learn_vectors # Creates the embeddings for the given dataset we specified in the Enviroment class env = Enviroment() m = 0 Samples = [] while m < len(env.listOfFiles): env.prepareNextFile() for table in env.listOfTables: tableRows = [] # Extract values for each column according to one row for row in table: dictForRow = env.mergeDictsInRow(row) sampleVisitor = SampleVisitor(enviromentWalkerContext(), dictForRow, env.expressions, env.rootTreeAdtNode.name) lists = sampleVisitor.traverse_tree(env.rootTreeAdtNode) lists = [x for x in lists if x != []] Samples += lists m += 1 embed_file = open('vectors_nextDate.pkl', 'wb') lists = learn_vectors(Samples, 'Vectorizer/logs') pickle.dump(lists, embed_file) embed_file.close()
def prepareVectorsForTablesConvWithCov(self): for table in self.listOfTables: self.vectorizationVisitor = SampleVisitorEnvWithConv( enviromentWalkerContext(), self.rootTreeAdtNode.name) mainNode = self.rootTreeAdtNode.accept(self.vectorizationVisitor) self.listOfTableVectors.append(mainNode)