#include "common/Paths.h" #include "ResultsDatasetExcel.h" namespace platform { ResultsDatasetExcel::ResultsDatasetExcel() { file_name = Paths::excelResults(); workbook = workbook_new(getFileName().c_str()); createFormats(); setProperties("Results"); } ResultsDatasetExcel::~ResultsDatasetExcel() { workbook_close(workbook); } void ResultsDatasetExcel::report(json& data) { worksheet = workbook_add_worksheet(workbook, data["dataset"].get().c_str()); // Header std::string title = "Results of dataset " + data["dataset"].get() + " - for " + data["model"].get() + " model"; worksheet_merge_range(worksheet, 0, 0, 0, 5, title.c_str(), styles["headerFirst"]); // Body header row = 2; int col = 0; for (const auto& name : { "#", "Model", "Date", "Time", "Score", "Hyperparameters" }) { writeString(row, col++, name, "bodyHeader"); } // Body std::string bold = "_bold"; double maxResult = data["maxResult"].get(); for (const auto& item : data["results"]) { row++; col = 0; std::string style = ""; auto score = item["score"].get(); if (score == data["max_models"][item["model"].get()]) { boldBlue(); style = bold; } if (score == maxResult) { boldRed(); style = bold; } writeInt(row, col++, row - 3, "ints" + style); writeString(row, col++, item["model"], "text" + style); writeString(row, col++, item["date"], "text" + style); writeString(row, col++, item["time"], "text" + style); writeDouble(row, col++, item["score"], "result" + style); writeString(row, col++, item["hyperparameters"].get().c_str(), "text" + style); } // Format columns worksheet_freeze_panes(worksheet, 3, 2); auto modelSize = data["lengths"]["maxModel"].get(); auto hyperSize = data["lengths"]["maxHyper"].get(); std::vector columns_sizes = { 5, modelSize + 3, 12, 9, 11, hyperSize + 10 }; for (int i = 0; i < columns_sizes.size(); ++i) { worksheet_set_column(worksheet, i, i, columns_sizes.at(i), NULL); } } }