# Written by Roye Mazor roeemz@campus.technion.ac.il
#version 0.1
#TODO: accept as arg the project path, output file path
#      
#	   SU, TP, Ideal SU graph
#	   Efficiency 

#Installation:
#                wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py --user
#                cd .local/bin
#                ./pip install xlsxwriter --user
#                cd -

import os
import subprocess
import xlsxwriter
import csv
import sys

#print 'Number of arguments:', len(sys.argv), 'arguments.'
#print 'Argument List:', str(sys.argv)

#if len(sys.argv) == 2:
#	if os.path.isfile(sys.argv[1] + '/taskgraph'):
#		
#	taskgraph_path = sys.argv[1]
#	output_path = './'
#elif len(sys.argv) == 3:
#	project_path = sys.argv[2]
#	output_path = './'


required_cores = [1,2,4,8,16,32,64,128,256,512,1024]
files = [r'rc_utilization.csv', r'myResultsFile.txt', r'rc64.log']

for core in required_cores:
    subprocess.call([r'./taskgraph', r'-cores='+str(core)])
	
    for file in files:
		os.rename(file, str(core) + r'_' + file)
workbook = xlsxwriter.Workbook('myResultsFile.xlsx', {'strings_to_numbers': True})
sheet = 0
for core in required_cores:
	sheet += 1
	worksheet_name = str(core) + r'_myResultsFile.txt'
	worksheet = workbook.add_worksheet(worksheet_name)
	bold = workbook.add_format({'bold': 1})
	datafile = str(core) + r'_' + files[0]
	
	table = list(csv.reader(open(datafile)))
		
	for row, data in enumerate(table):
		worksheet.write_row(row, 0, data)
	
	rows = len(table)
	cols = len(table[0])

	chart = workbook.add_chart({'type': 'scatter',
								 'subtype': 'straight'})

	for i in xrange(cols):
		col_letter = xlsxwriter.utility.xl_col_to_name(i+1)
		chart.add_series({
			'name':       '=' + worksheet_name + '!$' + col_letter + '$1',
			'categories': '=' + worksheet_name + '!$A$2:$A$8',
			'values':     '=' + worksheet_name + '!$' + col_letter + '$2:$' + col_letter + '$8',
		})

	chart.set_title ({'name': 'Utilization Chart - {} Cores'.format(core)})
	chart.set_x_axis({'name': 'Time'})
	chart.set_y_axis({'name': 'CPUs Used'})

	chart.set_style(13)

	worksheet.insert_chart('D10', chart, {'x_offset': 25, 'y_offset': 10})

workbook.close()
