コード例 #1
0
ファイル: LoopNode.py プロジェクト: xcegin/RL-ADT-DP
 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
コード例 #2
0
    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)
コード例 #3
0
ファイル: enviroment.py プロジェクト: xcegin/RL-ADT-DP
    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()
コード例 #4
0
 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
コード例 #5
0
ファイル: enviroment.py プロジェクト: xcegin/RL-ADT-DP
 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)
コード例 #6
0
ファイル: enviroment.py プロジェクト: xcegin/RL-ADT-DP
 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)
コード例 #7
0
 def reset(self):
     self.context = enviromentWalkerContext()
コード例 #8
0
 def reset(self):
     self.context = enviromentWalkerContext()
     self.embedding = 0
     self.functionName = ""
     self.numOfStaticRecursionCalls = 0
     self.currentArgumentVectorDependency = []
コード例 #9
0
 def reset(self):
     self.context = enviromentWalkerContext()
     self.currentArguments = []
コード例 #10
0
ファイル: sampe_all.py プロジェクト: xcegin/RL-ADT-DP
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()
コード例 #11
0
ファイル: enviroment.py プロジェクト: xcegin/RL-ADT-DP
 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)