Skip to content
Snippets Groups Projects
Commit d66acc38 authored by Britta Heymann's avatar Britta Heymann
Browse files

Additional refactoring for delayDistributionAnalysis.py

parent d01be700
No related branches found
No related tags found
1 merge request!164Refactor evaluation scripts
Pipeline #
...@@ -51,7 +51,7 @@ def parseDelayAnalysis(fileName, messageType, messagePrio): ...@@ -51,7 +51,7 @@ def parseDelayAnalysis(fileName, messageType, messagePrio):
# Find data both for bar chart and cumulative chart # Find data both for bar chart and cumulative chart
delayClasses = [] delayClasses = []
percentageDelivered = [] percentageDelivered = []
cumulativePercentages = {} cumulativePercentages = []
sumOfPercentages = 0 sumOfPercentages = 0
for line in analysis: for line in analysis:
match = re.match(".*<\s*(\d+):\s*(\d+.\d+)%", line) match = re.match(".*<\s*(\d+):\s*(\d+.\d+)%", line)
...@@ -62,7 +62,7 @@ def parseDelayAnalysis(fileName, messageType, messagePrio): ...@@ -62,7 +62,7 @@ def parseDelayAnalysis(fileName, messageType, messagePrio):
delayClasses.append(maxDelay) delayClasses.append(maxDelay)
percentageDelivered.append(percentage) percentageDelivered.append(percentage)
sumOfPercentages += percentage sumOfPercentages += percentage
cumulativePercentages[maxDelay] = sumOfPercentages cumulativePercentages.append(sumOfPercentages)
return delayClasses, percentageDelivered, cumulativePercentages return delayClasses, percentageDelivered, cumulativePercentages
...@@ -77,7 +77,7 @@ def plotDelayDistribution(title, delayClasses, percentageDelivered): ...@@ -77,7 +77,7 @@ def plotDelayDistribution(title, delayClasses, percentageDelivered):
def plotCumulativeDelay(delayClasses, cumulativePercentages): def plotCumulativeDelay(delayClasses, cumulativePercentages):
"""Plots a cumulative delay chart.""" """Plots a cumulative delay chart."""
plt.plot(delayClasses, [cumulativePercentages[delayClass] for delayClass in delayClasses]) plt.plot(delayClasses, cumulativePercentages)
plt.xlabel('Delay in minutes') plt.xlabel('Delay in minutes')
plt.ylabel('Cumulative percentage') plt.ylabel('Cumulative percentage')
plt.grid(True) plt.grid(True)
...@@ -85,25 +85,27 @@ def plotCumulativeDelay(delayClasses, cumulativePercentages): ...@@ -85,25 +85,27 @@ def plotCumulativeDelay(delayClasses, cumulativePercentages):
axes.set_xlim(xmin = 0) axes.set_xlim(xmin = 0)
axes.set_ylim(ymin = 0) axes.set_ylim(ymin = 0)
# Main function of the script. See script description at the top of the file for further information. def createDelayGraphicInFile(delayClasses, percentageDelivered, cumulativePercentages, title, fileName):
def main(analysisFileName, messageType, messagePrio, graphicFileName):
delayClasses, percentageDelivered, cumulativePercentages = parseDelayAnalysis(analysisFileName, messageType, messagePrio)
# Plot bar chart # Plot bar chart
plt.subplot(2,1,1) plt.subplot(2,1,1)
plotDelayDistribution( plotDelayDistribution(title, delayClasses, percentageDelivered)
title='Delay distribution of delivered {} messages\nPriority {}'.format(messageType, messagePrio),
delayClasses=delayClasses,
percentageDelivered=percentageDelivered)
# Directly below, plot cumulative chart # Directly below, plot cumulative chart
plt.subplot(2,1,2) plt.subplot(2,1,2)
plotCumulativeDelay(delayClasses, cumulativePercentages) plotCumulativeDelay(delayClasses, cumulativePercentages)
# Save to file # Save to file
plt.savefig(graphicFileName, dpi = 300) plt.savefig(fileName, dpi = 300)
plt.close() plt.close()
# Main function of the script. See script description at the top of the file for further information.
def main(analysisFileName, messageType, messagePrio, graphicFileName):
delayClasses, percentageDelivered, cumulativePercentages = parseDelayAnalysis(analysisFileName, messageType, messagePrio)
createDelayGraphicInFile(
delayClasses, percentageDelivered, cumulativePercentages,
title='Delay distribution of delivered {} messages\nPriority {}'.format(messageType, messagePrio),
fileName=graphicFileName)
# Make sure script can be called from command line. # Make sure script can be called from command line.
if __name__ == "__main__": if __name__ == "__main__":
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
\ No newline at end of file
  • Contributor

    SonarQube analysis reported no issues.

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment