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)
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)