This commit is contained in:
cephi_sui 2024-12-05 14:17:08 -05:00
parent 1735ecf142
commit d17ccf01a0

View File

@ -1,6 +1,6 @@
#! /bin/python3 #! /bin/python3
from perf_stat import Stat, CPU from data_stat import Stat, Cpu
import argparse import argparse
import os, glob import os, glob
@ -122,16 +122,9 @@ def visualize(
plt.show() plt.show()
def main(): def main():
class Command(Enum):
PARSE = 'parse'
VISUALIZE = 'visualize'
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('command', choices=[x.value for x in Command]) parser.add_argument('input_dir',
parser.add_argument('filepath', help='the input directory')
help='the output for the ' + Command.PARSE.value + ' command or the input for the ' + Command.VISUALIZE.value + ' command')
parser.add_argument('-i', '--input_dir',
help='the input directory for the parse command')
parser.add_argument('-p', '--plot', parser.add_argument('-p', '--plot',
choices=[x.name.lower() for x in Plot], choices=[x.name.lower() for x in Plot],
help = 'the type of plot') help = 'the type of plot')
@ -156,34 +149,24 @@ def main():
parser.add_argument('-f', '--filter', nargs = '+', parser.add_argument('-f', '--filter', nargs = '+',
help = 'a comma-separated string of names and values to filter out.', help = 'a comma-separated string of names and values to filter out.',
default = []) default = [])
args = parser.parse_args() args = parser.parse_args()
args.plot = Plot[args.plot.upper()]
stats_list: list[dict] = list() data_list: list[dict] = list()
if args.command == Command.PARSE.value:
if (args.input_dir) is None:
print("An input directory is required with -i")
exit(-1)
for filename in glob.glob(f'{args.input_dir.rstrip("/")}/*.json'): for filename in glob.glob(f'{args.input_dir.rstrip("/")}/*.json'):
with open(filename, 'r') as file: with open(filename, 'r') as file:
stats_list.append(json.load(file)) data_list.append(json.load(file))
print(filename + " loaded.") print(filename + " loaded.")
with open(args.filepath, 'w') as file: print(data_list)
json.dump(stats_list, file, indent = 2)
elif args.command == Command.VISUALIZE.value:
with open(args.filepath, 'r') as file:
stats_list = json.load(file)
#x = Stat[args.x.upper()] if args.x is not None else None #x = Stat[args.x.upper()] if args.x is not None else None
x = args.x x = args.x
#y = Stat[args.y.upper()] if args.y is not None else None #y = Stat[args.y.upper()] if args.y is not None else None
y = args.y y = args.y
#color = Stat[args.color.upper()] if args.color is not None else None #color = Stat[args.color.upper()] if args.color is not None else None
color = args.color color = args.color
visualize(stats_list, Plot[args.plot.upper()], args.rows, args.size, args.font_size, x, y, color, args.filter) visualize(data_list, args.plot, args.rows, args.size, args.font_size, x, y, color, args.filter)
if __name__ == '__main__': if __name__ == '__main__':
main() main()