Refactor folders structure (add excel)

This commit is contained in:
2023-05-19 01:44:27 +02:00
parent 0d02b690bb
commit b55553847b
15 changed files with 52 additions and 29 deletions

View File

@@ -1,5 +1,6 @@
import os import os
import sys import sys
from pathlib import Path
from operator import itemgetter from operator import itemgetter
from types import SimpleNamespace from types import SimpleNamespace
import math import math
@@ -330,9 +331,12 @@ class Excel(BaseReport):
) )
self._compare_totals = {} self._compare_totals = {}
if book is None: if book is None:
self.excel_file_name = self.file_name.replace(".json", ".xlsx") self.excel_file_name = Path(self.file_name).name.replace(
Files.report_ext, ".xlsx"
)
self.book = xlsxwriter.Workbook( self.book = xlsxwriter.Workbook(
self.excel_file_name, {"nan_inf_to_errors": True} os.path.join(Folders.excel, self.excel_file_name),
{"nan_inf_to_errors": True},
) )
self.set_book_properties() self.set_book_properties()
self.close = True self.close = True
@@ -616,7 +620,9 @@ class ReportDatasets:
if excel: if excel:
self.max_length = 0 self.max_length = 0
if book is None: if book is None:
self.excel_file_name = Files.datasets_report_excel self.excel_file_name = os.path.join(
Folders.excel, Files.datasets_report_excel
)
self.book = xlsxwriter.Workbook( self.book = xlsxwriter.Workbook(
self.excel_file_name, {"nan_inf_to_errors": True} self.excel_file_name, {"nan_inf_to_errors": True}
) )
@@ -1113,9 +1119,7 @@ class Benchmark:
f.write("\\hline\n\\end{tabular}}\n\\end{sidewaystable}\n") f.write("\\hline\n\\end{tabular}}\n\\end{sidewaystable}\n")
def get_excel_file_name(self): def get_excel_file_name(self):
return os.path.join( return os.path.join(Folders.excel, Files.exreport_excel(self._score))
Folders.exreport, Files.exreport_excel(self._score)
)
def excel(self): def excel(self):
book = xlsxwriter.Workbook( book = xlsxwriter.Workbook(
@@ -1564,7 +1568,9 @@ class Summary:
path, self.data_filtered[num]["file"] path, self.data_filtered[num]["file"]
) )
if book is None: if book is None:
file_name = Files.be_list_excel file_name = os.path.join(
Folders.excel, Files.be_list_excel
)
book = xlsxwriter.Workbook( book = xlsxwriter.Workbook(
file_name, {"nan_inf_to_errors": True} file_name, {"nan_inf_to_errors": True}
) )

View File

@@ -13,6 +13,7 @@ class Folders:
exreport = "exreport" exreport = "exreport"
report = os.path.join(exreport, "exreport_output") report = os.path.join(exreport, "exreport_output")
img = "img" img = "img"
excel = "excel"
@staticmethod @staticmethod
def src(): def src():

View File

@@ -15,6 +15,7 @@ def main(args_test=None):
folders.append(os.path.join(args.project_name, Folders.exreport)) folders.append(os.path.join(args.project_name, Folders.exreport))
folders.append(os.path.join(args.project_name, Folders.report)) folders.append(os.path.join(args.project_name, Folders.report))
folders.append(os.path.join(args.project_name, Folders.img)) folders.append(os.path.join(args.project_name, Folders.img))
folders.append(os.path.join(args.project_name, Folders.excel))
try: try:
for folder in folders: for folder in folders:
print(f"Creating folder {folder}") print(f"Creating folder {folder}")

View File

@@ -1,6 +1,7 @@
#! /usr/bin/env python #! /usr/bin/env python
import os
from benchmark.Results import Summary from benchmark.Results import Summary
from benchmark.Utils import Files from benchmark.Utils import Files, Folders
from benchmark.Arguments import Arguments from benchmark.Arguments import Arguments
"""List experiments of a model """List experiments of a model
@@ -28,5 +29,6 @@ def main(args_test=None):
return return
excel_generated = data.manage_results() excel_generated = data.manage_results()
if excel_generated: if excel_generated:
print(f"Generated file: {Files.be_list_excel}") name = os.path.join(Folders.excel, Files.be_list_excel)
Files.open(Files.be_list_excel, test=args_test is not None) print(f"Generated file: {name}")
Files.open(name, test=args_test is not None)

View File

@@ -1,7 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
import os
from benchmark.Results import Report, Excel, SQL, ReportBest, ReportDatasets from benchmark.Results import Report, Excel, SQL, ReportBest, ReportDatasets
from benchmark.Utils import Files from benchmark.Utils import Files, Folders
from benchmark.Arguments import Arguments from benchmark.Arguments import Arguments
from pathlib import Path
"""Build report on screen of a result file, optionally generate excel and sql """Build report on screen of a result file, optionally generate excel and sql
@@ -69,11 +71,13 @@ def main(args_test=None):
sql.report() sql.report()
if args.excel: if args.excel:
excel = Excel( excel = Excel(
file_name=args.file_name, file_name=Path(args.file_name).name,
compare=args.compare, compare=args.compare,
) )
excel.report() excel.report()
Files.open(excel.get_file_name(), is_test) Files.open(
os.path.join(Folders.excel, excel.get_file_name()), is_test
)
case "datasets": case "datasets":
report = ReportDatasets(args.excel) report = ReportDatasets(args.excel)
report.report() report.report()

View File

@@ -15,10 +15,10 @@ class BenchmarkTest(TestBase):
files.append(Files.exreport(score)) files.append(Files.exreport(score))
files.append(Files.exreport_output(score)) files.append(Files.exreport_output(score))
files.append(Files.exreport_err(score)) files.append(Files.exreport_err(score))
files.append(Files.exreport_excel(score))
files.append(Files.exreport_pdf) files.append(Files.exreport_pdf)
files.append(Files.tex_output("accuracy")) files.append(Files.tex_output("accuracy"))
self.remove_files(files, Folders.exreport) self.remove_files(files, Folders.exreport)
self.remove_files([Files.exreport_excel("accuracy")], Folders.excel)
self.remove_files(files, ".") self.remove_files(files, ".")
return super().tearDown() return super().tearDown()

View File

@@ -13,7 +13,7 @@ class ExcelTest(TestBase):
"results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.xlsx", "results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.xlsx",
"results_accuracy_ODTE_Galgo_2022-04-20_10:52:20_0.xlsx", "results_accuracy_ODTE_Galgo_2022-04-20_10:52:20_0.xlsx",
] ]
self.remove_files(files, Folders.results) self.remove_files(files, Folders.excel)
return super().tearDown() return super().tearDown()
def test_report_excel_compared(self): def test_report_excel_compared(self):
@@ -21,7 +21,7 @@ class ExcelTest(TestBase):
report = Excel(file_name, compare=True) report = Excel(file_name, compare=True)
report.report() report.report()
file_output = report.get_file_name() file_output = report.get_file_name()
book = load_workbook(file_output) book = load_workbook(os.path.join(Folders.excel, file_output))
sheet = book["STree"] sheet = book["STree"]
self.check_excel_sheet(sheet, "excel_compared") self.check_excel_sheet(sheet, "excel_compared")
@@ -30,14 +30,14 @@ class ExcelTest(TestBase):
report = Excel(file_name, compare=False) report = Excel(file_name, compare=False)
report.report() report.report()
file_output = report.get_file_name() file_output = report.get_file_name()
book = load_workbook(file_output) book = load_workbook(os.path.join(Folders.excel, file_output))
sheet = book["STree"] sheet = book["STree"]
self.check_excel_sheet(sheet, "excel") self.check_excel_sheet(sheet, "excel")
def test_Excel_Add_sheet(self): def test_Excel_Add_sheet(self):
file_name = "results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json" file_name = "results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json"
excel_file_name = file_name.replace(".json", ".xlsx") excel_file_name = file_name.replace(".json", ".xlsx")
book = Workbook(os.path.join(Folders.results, excel_file_name)) book = Workbook(os.path.join(Folders.excel, excel_file_name))
excel = Excel(file_name=file_name, book=book) excel = Excel(file_name=file_name, book=book)
excel.report() excel.report()
report = Excel( report = Excel(
@@ -46,7 +46,7 @@ class ExcelTest(TestBase):
) )
report.report() report.report()
book.close() book.close()
book = load_workbook(os.path.join(Folders.results, excel_file_name)) book = load_workbook(os.path.join(Folders.excel, excel_file_name))
sheet = book["STree"] sheet = book["STree"]
self.check_excel_sheet(sheet, "excel_add_STree") self.check_excel_sheet(sheet, "excel_add_STree")
sheet = book["ODTE"] sheet = book["ODTE"]

View File

@@ -11,6 +11,8 @@ class UtilTest(TestBase):
self.assertEqual("results", Folders.results) self.assertEqual("results", Folders.results)
self.assertEqual("hidden_results", Folders.hidden_results) self.assertEqual("hidden_results", Folders.hidden_results)
self.assertEqual("exreport", Folders.exreport) self.assertEqual("exreport", Folders.exreport)
self.assertEqual("excel", Folders.excel)
self.assertEqual("img", Folders.img)
self.assertEqual( self.assertEqual(
os.path.join(Folders.exreport, "exreport_output"), Folders.report os.path.join(Folders.exreport, "exreport_output"), Folders.report
) )

View File

@@ -16,10 +16,10 @@ class BeBenchmarkTest(TestBase):
files.append(Files.exreport(score)) files.append(Files.exreport(score))
files.append(Files.exreport_output(score)) files.append(Files.exreport_output(score))
files.append(Files.exreport_err(score)) files.append(Files.exreport_err(score))
files.append(Files.exreport_excel(self.score))
files.append(Files.exreport_pdf) files.append(Files.exreport_pdf)
files.append(Files.tex_output(self.score)) files.append(Files.tex_output(self.score))
self.remove_files(files, Folders.exreport) self.remove_files(files, Folders.exreport)
self.remove_files([Files.exreport_excel(self.score)], Folders.excel)
self.remove_files(files, ".") self.remove_files(files, ".")
return super().tearDown() return super().tearDown()
@@ -41,7 +41,7 @@ class BeBenchmarkTest(TestBase):
self.check_file_file(file_name, "exreport_tex") self.check_file_file(file_name, "exreport_tex")
# Check excel file # Check excel file
file_name = os.path.join( file_name = os.path.join(
Folders.exreport, Files.exreport_excel(self.score) Folders.excel, Files.exreport_excel(self.score)
) )
book = load_workbook(file_name) book = load_workbook(file_name)
replace = None replace = None

View File

@@ -33,6 +33,7 @@ class BeInitProjectTest(TestBase):
Folders.exreport, Folders.exreport,
Folders.report, Folders.report,
Folders.img, Folders.img,
Folders.excel,
] ]
for folder in expected: for folder in expected:
self.assertIsFolder(os.path.join(test_project, folder)) self.assertIsFolder(os.path.join(test_project, folder))

View File

@@ -39,7 +39,7 @@ class BeListTest(TestBase):
stdout, stderr = self.execute_script("be_list", ["-m", "STree"]) stdout, stderr = self.execute_script("be_list", ["-m", "STree"])
self.assertEqual(stderr.getvalue(), "") self.assertEqual(stderr.getvalue(), "")
self.check_output_file(stdout, "be_list_report_excel") self.check_output_file(stdout, "be_list_report_excel")
book = load_workbook(Files.be_list_excel) book = load_workbook(os.path.join(Folders.excel, Files.be_list_excel))
sheet = book["STree"] sheet = book["STree"]
self.check_excel_sheet(sheet, "excel") self.check_excel_sheet(sheet, "excel")
@@ -50,7 +50,7 @@ class BeListTest(TestBase):
stdout, stderr = self.execute_script("be_list", ["-m", "STree"]) stdout, stderr = self.execute_script("be_list", ["-m", "STree"])
self.assertEqual(stderr.getvalue(), "") self.assertEqual(stderr.getvalue(), "")
self.check_output_file(stdout, "be_list_report_excel_2") self.check_output_file(stdout, "be_list_report_excel_2")
book = load_workbook(Files.be_list_excel) book = load_workbook(os.path.join(Folders.excel, Files.be_list_excel))
sheet = book["STree"] sheet = book["STree"]
self.check_excel_sheet(sheet, "excel") self.check_excel_sheet(sheet, "excel")
sheet = book["STree2"] sheet = book["STree2"]

View File

@@ -17,7 +17,10 @@ class BeReportTest(TestBase):
"results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.xlsx", "results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.xlsx",
] ]
self.remove_files(files, Folders.results) self.remove_files(files, Folders.results)
self.remove_files([Files.datasets_report_excel], os.getcwd()) self.remove_files(
[Files.datasets_report_excel],
os.path.join(os.getcwd(), Folders.excel),
)
return super().tearDown() return super().tearDown()
def test_be_report(self): def test_be_report(self):
@@ -67,7 +70,9 @@ class BeReportTest(TestBase):
# replace benchmark version # replace benchmark version
line = self.replace_benchmark_version(line, output_text, index) line = self.replace_benchmark_version(line, output_text, index)
self.assertEqual(line, output_text[index]) self.assertEqual(line, output_text[index])
file_name = os.path.join(os.getcwd(), Files.datasets_report_excel) file_name = os.path.join(
os.getcwd(), Folders.excel, Files.datasets_report_excel
)
book = load_workbook(file_name) book = load_workbook(file_name)
sheet = book["Datasets"] sheet = book["Datasets"]
self.check_excel_sheet( self.check_excel_sheet(
@@ -129,7 +134,7 @@ class BeReportTest(TestBase):
["file", file_name, "-x", "-c"], ["file", file_name, "-x", "-c"],
) )
file_name = os.path.join( file_name = os.path.join(
Folders.results, file_name.replace(".json", ".xlsx") Folders.excel, file_name.replace(Files.report_ext, ".xlsx")
) )
book = load_workbook(file_name) book = load_workbook(file_name)
sheet = book["STree"] sheet = book["STree"]
@@ -144,7 +149,7 @@ class BeReportTest(TestBase):
["file", file_name, "-x"], ["file", file_name, "-x"],
) )
file_name = os.path.join( file_name = os.path.join(
Folders.results, file_name.replace(".json", ".xlsx") Folders.excel, file_name.replace(".json", ".xlsx")
) )
book = load_workbook(file_name) book = load_workbook(file_name)
sheet = book["STree"] sheet = book["STree"]

View File

@@ -4,6 +4,7 @@ Creating folder test_project/hidden_results
Creating folder test_project/exreport Creating folder test_project/exreport
Creating folder test_project/exreport/exreport_output Creating folder test_project/exreport/exreport_output
Creating folder test_project/img Creating folder test_project/img
Creating folder test_project/excel
Done! Done!
Please, edit .env file with your settings and add a datasets folder Please, edit .env file with your settings and add a datasets folder
with an all.txt file with the datasets you want to use. with an all.txt file with the datasets you want to use.

View File

@@ -4,4 +4,4 @@
 1 2021-10-27 results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json 0.04158 0.943 default A  1 2021-10-27 results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json 0.04158 0.943 default A
 2 2021-09-30 results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json 0.04544 0.173 With gridsearched hyperparameters  2 2021-09-30 results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json 0.04544 0.173 With gridsearched hyperparameters
Added results/results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json to some_results.xlsx Added results/results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json to some_results.xlsx
Generated file: some_results.xlsx Generated file: excel/some_results.xlsx

View File

@@ -5,4 +5,4 @@
 2 2021-09-30 results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json 0.04544 0.173 With gridsearched hyperparameters  2 2021-09-30 results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json 0.04544 0.173 With gridsearched hyperparameters
Added results/results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json to some_results.xlsx Added results/results_accuracy_STree_iMac27_2021-09-30_11:42:07_0.json to some_results.xlsx
Added results/results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json to some_results.xlsx Added results/results_accuracy_STree_iMac27_2021-10-27_09:40:40_0.json to some_results.xlsx
Generated file: some_results.xlsx Generated file: excel/some_results.xlsx