Add excel write to analysis_mysql

This commit is contained in:
2021-06-02 23:34:07 +02:00
parent d592aaee19
commit cc34fbf69e
2 changed files with 59 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
import argparse
from typing import Tuple
import numpy as np
import xlsxwriter
from experimentation.Sets import Datasets
from experimentation.Utils import TextColor
from experimentation.Database import MySQL
@@ -71,6 +72,14 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
required=False,
default=False,
)
ap.add_argument(
"-x",
"--excel",
type=str,
default="",
required=False,
help="generate excel file",
)
args = ap.parse_args()
return (
args.experiment,
@@ -79,9 +88,45 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
args.tex_output,
args.compare,
args.time,
args.excel,
)
def excel_write_header(book, sheet):
header = book.add_format()
header.set_font_size(18)
subheader = book.add_format()
subheader.set_font_size(16)
bold = book.add_format({"bold": True, "font_size": 14})
sheet.write(0, 0, "Dataset", bold)
sheet.set_column(0, 0, 30)
i = 1
lengths = [10, 10, 10, 10, 10, 10, 10]
for item, length in zip(models_tree, lengths):
sheet.write(0, i, item, bold)
sheet.set_column(i, i, length)
i += 1
def excel_write_line(book, sheet, dataset, line):
try:
excel_write_line.row += 1
except AttributeError:
excel_write_line.row = 1
size_n = 14
decimal = book.add_format({"num_format": "0.000000", "font_size": size_n})
normal = book.add_format({"font_size": size_n})
col = 0
excel_ws.write(excel_write_line.row, col, dataset, normal)
for item in line.values():
sheet.write(excel_write_line.row, col + 1, item, decimal)
col += 1
def excel_write_footer(book):
book.close()
def print_header_tex(file_tex, second=False):
# old_header = (
# "\\begin{table}[ht]\n"
@@ -209,6 +254,7 @@ def report_footer(agg):
tex_output,
compare,
time_info,
excel,
) = parse_arguments()
dbh = MySQL()
database = dbh.get_connection()
@@ -240,6 +286,11 @@ for item in models:
fields += (f"{item}",)
report_header(title, experiment, model_type)
color = TextColor.LINE1
if excel != "":
file_name = f"{excel}.xlsx"
excel_wb = xlsxwriter.Workbook(file_name)
excel_ws = excel_wb.add_worksheet("exreport")
excel_write_header(excel_wb, excel_ws)
agg = {}
for item in [
"better",
@@ -266,6 +317,7 @@ for number, dataset in enumerate(dt):
line["leaves"] = 0.0
line["depth"] = 0.0
line_tex = line.copy()
line_excel = {}
for column, model in enumerate(models):
record = dbh.find_best(dataset[0], model, experiment)
if record is None:
@@ -291,6 +343,10 @@ for number, dataset in enumerate(dt):
line[model] = color + item
if csv_output:
print(f"{dataset[0]}, {model}, {accuracy}", file=file_csv)
if excel != "":
line_excel[model] = accuracy
if excel != "":
excel_write_line(excel_wb, excel_ws, dataset[0], line_excel)
if tex_output:
print_line_tex(number + 1, dataset[0], line_tex, file_tex)
if number == 24:
@@ -303,6 +359,8 @@ for number, dataset in enumerate(dt):
TextColor.LINE2 if color == TextColor.LINE1 else TextColor.LINE1
)
print(report_line(line))
if excel != "":
excel_write_footer(excel_wb)
report_footer(agg)
if csv_output:
file_csv.close()

View File

@@ -5,3 +5,4 @@ ipympl
mysql-client
mysql-connector
sshtunnel
xslxwriter