def std5Call(dirName, maxTime):
    print('---------------------------------------')
    print('       executing std5 plots            ')
    print('---------------------------------------')
    fileList = getAllFilenames(dirName)
    percentage, timeStep, nEntrance = traverseMultiDB(fileList, True, maxTime)
    generatePlot(percentage, timeStep, nEntrance)
def std2Call(dirName, maxTime):
  print('---------------------------------------')
  print('       executing std2 plots            ')
  print('---------------------------------------')
  fileList = getAllFilenames(dirName)
  percentage, appTTime, nonAppTTime, totalTTime = traverseMultiDB(fileList, True, maxTime)
  generatePlot(percentage, appTTime, nonAppTTime, totalTTime)
def averageTimePathTime(targetDir, hashKey):
    print(targetDir)
    fileNames = getAllFilenames(targetDir)
    percentage = []
    timeStep = []
    absNash = []
    count = []
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                thisPercent, thisPath, thisSeries = tokenizePathFlow(line)
                if thisPath != hashKey:
                    continue
                elif thisPercent not in percentage:
                    percentage.append(thisPercent)
                    absNash.append(thisSeries)
                    count.append(1)
                else:
                    idx = percentage.index(thisPercent)
                    for i in range(len(absNash[idx])):
                        absNash[idx][i] += thisSeries[i]
                    count[idx] += 1
    for i in range(len(percentage)):
        absNash[i] = [x / count[i] for x in absNash[i]]
    scale = 600
    for i in range(len(absNash[0])):
        timeStep.append(i * scale)
    return percentage, timeStep, absNash
def std4Call(dirName, maxTime):
    print('---------------------------------------')
    print('       executing std4 plots            ')
    print('---------------------------------------')
    fileList = getAllFilenames(dirName)
    percentage, timeStep, absNash, rltNash = traverseMultiDB(
        fileList, True, maxTime)
    generatePlot(percentage, timeStep, absNash, rltNash)
Exemplo n.º 5
0
def std3Call(dirName, maxTime):
    print('---------------------------------------')
    print('       executing std3 plots            ')
    print('---------------------------------------')
    fileList = getAllFilenames(dirName)
    percentage, pathAvgTime, pathFlow, commonKeys, countNonEnter, countStuck = traverseMultiDB(
        fileList, True, maxTime)
    generatePlot(percentage, pathAvgTime, pathFlow, commonKeys, countNonEnter,
                 countStuck)
def averagePathTTime(targetDir):
    fileNames = getAllFilenames(targetDir)
    # Key: percentage, Item: dictionary of pathID - flow/count
    # PathFlow:
    #   key                  item
    #   10               {33665: 151,
    #                     33625: 7}
    #   30               {33625: 84}
    pathFlow = {}
    pathCount = {}
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                curPercentage, curDict = parseLinePathTTime(line)
                if curPercentage not in list(pathFlow.keys()):
                    pathFlow[curPercentage] = curDict
#          pathCount[curPercentage]= {}
#          for pathID in list(curDict.keys()):
#            pathCount[curPercentage][pathID] = 1
                else:
                    for pathID in list(curDict.keys()):
                        if pathID not in list(pathFlow[curPercentage].keys()):
                            pathFlow[curPercentage][pathID] = [
                                curDict[pathID][0]
                            ]
#              pathCount[curPercentage][pathID]= 1
                        else:
                            pathFlow[curPercentage][pathID].append(
                                curDict[pathID][0])
#              pathCount[curPercentage][pathID]+= 1
#  print(pathFlow)
    pathFlowStd = {}
    for percentage in list(pathFlow.keys()):
        pathFlowStd[percentage] = {}
        for pathID in list(pathFlow[percentage].keys()):
            pathFlowStd[percentage][pathID] = np.std(
                np.array(pathFlow[percentage][pathID]))
            pathFlow[percentage][pathID] = np.mean(
                np.array(pathFlow[percentage][pathID]))


#  print(pathFlow)
#  print(pathFlowStd)
    percentage = []
    flowList = []
    stdList = []
    for key in list(pathFlow.keys()):
        percentage.append(key)
        flowList.append(pathFlow[key])
        stdList.append(pathFlowStd[key])
    unionKeys = getKeyUnion(flowList)
    zipped = list(zip(percentage, flowList, stdList))
    zipped.sort()
    unzip = list(zip(*zipped))
    sPercentage, sPercentFlowDict, sPercentFlowStdDict = list(map(list, unzip))
    return sPercentage, sPercentFlowDict, sPercentFlowStdDict, unionKeys
def averagePathflow(targetDir):
    fileNames = getAllFilenames(targetDir)
    # Key: percentage, Item: dictionary of pathID - flow/count
    # PathFlow:
    #   key                  item
    #   10               {33665: 151,
    #                     33625: 7}
    #   30               {33625: 84}
    pathFlow = {}
    pathCount = {}
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                curPercentage, curDict = parseLinePathFlow(line)
                if curPercentage not in list(pathFlow.keys()):
                    pathFlow[curPercentage] = curDict
                    pathCount[curPercentage] = {}
                    for pathID in list(curDict.keys()):
                        pathCount[curPercentage][pathID] = 1
                else:
                    for pathID in list(curDict.keys()):
                        if pathID not in list(pathFlow[curPercentage].keys()):
                            pathFlow[curPercentage][pathID] = curDict[pathID]
                            pathCount[curPercentage][pathID] = 1
                        else:
                            pathFlow[curPercentage][pathID] += curDict[pathID]
                            pathCount[curPercentage][pathID] += 1
    print(pathFlow)
    print(pathCount)
    for percentage in list(pathFlow.keys()):
        for pathID in list(pathFlow[percentage].keys()):
            pathFlow[percentage][pathID] /= pathCount[percentage][pathID]
    percentage = []
    flowList = []
    for key in list(pathFlow.keys()):
        percentage.append(key)
        flowList.append(pathFlow[key])
    unionKeys = getKeyUnion(flowList)
    print(unionKeys)
    zipped = list(zip(percentage, flowList))
    zipped.sort()
    unzip = list(zip(*zipped))
    sPercentage, sPercentFlowDict = list(map(list, unzip))
    return sPercentage, sPercentFlowDict, unionKeys
def averageTimePathTimeOld(targetDir):
    fileNames = getAllFilenames(targetDir)
    print(fileNames)
    hashKey = getDesiredPathStd6Old(fileNames)
    percentage = []
    timeStep = []
    absNash = []
    count = {}
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                thisPercent, thisPath, thisSeries = tokenizePathFlow(line)
                if thisPath != hashKey:
                    continue
                elif thisPercent not in percentage:
                    percentage.append(thisPercent)
                    absNash.append(thisSeries)
                    dummy = []
                    for number in thisSeries:
                        if number == 0:
                            dummy.append(0)
                        else:
                            dummy.append(1)
                    count[thisPercent] = dummy
                else:
                    idx = percentage.index(thisPercent)
                    for i in range(len(absNash[idx])):
                        absNash[idx][i] += thisSeries[i]
                    for i in range(len(thisSeries)):
                        if thisSeries[i] != 0:
                            count[thisPercent][i] += 1
    for i in range(len(percentage)):
        dummySeries = []
        for j in range(len(count[percentage[i]])):
            if count[percentage[i]][j] != 0:
                dummySeries.append(absNash[i][j] / count[percentage[i]][j])
            else:
                dummySeries.append(0)
        absNash[i] = dummySeries
    scale = 600
    for i in range(len(absNash[0])):
        timeStep.append(i * scale)
    return percentage, timeStep, absNash
def averageND(targetDir):
    fileNames = getAllFilenames(targetDir)
    count = {}
    absND = {}
    rltND = {}
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                line.strip()
                thisLine = line.split(',')
                if int(thisLine[0]) not in list(absND.keys()):
                    #          count[int(thisLine[0])] = 1
                    absND[int(thisLine[0])] = [float(thisLine[1])]
                    rltND[int(thisLine[0])] = [float(thisLine[2])]
                else:
                    #          count[int(thisLine[0])] += 1
                    absND[int(thisLine[0])].append(float(thisLine[1]))
                    rltND[int(thisLine[0])].append(float(thisLine[2]))
    absnd = []
    absndStd = []
    rltnd = []
    rltndStd = []
    percentage = []
    for key in list(absND.keys()):
        #    absnd.append(absND[key]/count[key])
        #    rltnd.append(rltND[key]/count[key])
        percentage.append(key)
        absnd.append(np.mean(np.array(absND[key])))
        absndStd.append(np.std(np.array(absND[key])))
        rltnd.append(np.mean(np.array(rltND[key])))
        rltndStd.append(np.std(np.array(rltND[key])))
    zipped = list(zip(percentage, absnd, rltnd, absndStd, rltndStd))
    zipped.sort()
    unzip = list(zip(*zipped))
    sPercentage, sAbsND, sRltND, sAbsNDStd, sRltNDStd = list(map(list, unzip))
    return sPercentage, sAbsND, sRltND, sAbsNDStd, sRltNDStd
def averageTimeND(targetDir, stepSize):
    fileNames = getAllFilenames(targetDir)
    percentage = []
    timeStep = []
    absNash = []
    count = []
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            for line in fin:
                thisPercent, thisSeries = tokenize(line)
                if thisPercent not in percentage:
                    percentage.append(thisPercent)
                    absNash.append(thisSeries)
                    count.append(1)
                else:
                    idx = percentage.index(thisPercent)
                    for i in range(len(absNash[idx])):
                        absNash[idx][i] += thisSeries[i]
                    count[idx] += 1
    for i in range(len(percentage)):
        absNash[i] = [x / count[i] for x in absNash[i]]
    for i in range(len(absNash[0])):
        timeStep.append(i * stepSize)
    return percentage, timeStep, absNash
  print('plotting complete, results saved under ./outputFigures/\n')

def printUsage(): 
  print('usage: \n\t python extractMultiSQLite.py directoryName showAllMessages maxEntranceTime')
  print('directoryName: the directory in which the sqlite databases are stored')
  print('showAllMessages: use "true" to output all messages, recommended')
  print('system exiting...')
  sys.exit() 

def std2Call(dirName, maxTime):
  print('---------------------------------------')
  print('       executing std2 plots            ')
  print('---------------------------------------')
  fileList = getAllFilenames(dirName)
  percentage, appTTime, nonAppTTime, totalTTime = traverseMultiDB(fileList, True, maxTime)
  generatePlot(percentage, appTTime, nonAppTTime, totalTTime)
  

# Main code starts here
if __name__ == '__main__':
  if len(sys.argv) != 4:
    printUsage()
  dirName  = sys.argv[1]
  debug    = sys.argv[2]
  maxTime  = int(sys.argv[3])
  fileList = getAllFilenames(dirName)
  dm.printObjFiles(fileList, debug)
  percentage, appTTime, nonAppTTime, totalTTime = traverseMultiDB(fileList, debug, maxTime)
  dm.printTraverseResults(percentage, appTTime, nonAppTTime, debug)
  generatePlot(percentage, appTTime, nonAppTTime, totalTTime)