Add results files affected in best results excel
This commit is contained in:
parent
130139f644
commit
84cec0c1e0
@ -1,9 +1,23 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "BestResultsExcel.h"
|
#include "BestResultsExcel.h"
|
||||||
#include "Paths.h"
|
#include "Paths.h"
|
||||||
|
#include <map>
|
||||||
|
#include <nlohmann/json.hpp>
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
|
#include "ReportExcel.h"
|
||||||
|
|
||||||
namespace platform {
|
namespace platform {
|
||||||
|
json loadResultData(const string& fileName)
|
||||||
|
{
|
||||||
|
json data;
|
||||||
|
ifstream resultData(fileName);
|
||||||
|
if (resultData.is_open()) {
|
||||||
|
data = json::parse(resultData);
|
||||||
|
} else {
|
||||||
|
throw invalid_argument("Unable to open result file. [" + fileName + "]");
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
string getColumnName(int colNum)
|
string getColumnName(int colNum)
|
||||||
{
|
{
|
||||||
string columnName = "";
|
string columnName = "";
|
||||||
@ -47,13 +61,8 @@ namespace platform {
|
|||||||
cerr << "File " << fileName << " doesn't exist." << endl;
|
cerr << "File " << fileName << " doesn't exist." << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
json data;
|
json data = loadResultData(fileName);
|
||||||
ifstream resultData(fileName);
|
|
||||||
if (resultData.is_open()) {
|
|
||||||
data = json::parse(resultData);
|
|
||||||
} else {
|
|
||||||
throw invalid_argument("Unable to open result file. [" + fileName + "]");
|
|
||||||
}
|
|
||||||
string title = "Best results for " + model;
|
string title = "Best results for " + model;
|
||||||
worksheet_merge_range(worksheet, 0, 0, 0, 4, title.c_str(), styles["headerFirst"]);
|
worksheet_merge_range(worksheet, 0, 0, 0, 4, title.c_str(), styles["headerFirst"]);
|
||||||
// Body header
|
// Body header
|
||||||
@ -67,12 +76,29 @@ namespace platform {
|
|||||||
auto i = 0;
|
auto i = 0;
|
||||||
string hyperparameters;
|
string hyperparameters;
|
||||||
int hypSize = 0;
|
int hypSize = 0;
|
||||||
|
map<string, string> files; // map of files imported and their tabs
|
||||||
for (auto const& item : data.items()) {
|
for (auto const& item : data.items()) {
|
||||||
row++;
|
row++;
|
||||||
writeInt(row, 0, i++, "ints");
|
writeInt(row, 0, i++, "ints");
|
||||||
writeString(row, 1, item.key().c_str(), "text");
|
writeString(row, 1, item.key().c_str(), "text");
|
||||||
writeDouble(row, 2, item.value().at(0).get<double>(), "result");
|
writeDouble(row, 2, item.value().at(0).get<double>(), "result");
|
||||||
writeString(row, 3, item.value().at(2).get<string>(), "text");
|
auto fileName = item.value().at(2).get<string>();
|
||||||
|
string hyperlink = "";
|
||||||
|
try {
|
||||||
|
hyperlink = files.at(fileName);
|
||||||
|
}
|
||||||
|
catch (const out_of_range& oor) {
|
||||||
|
auto tabName = "table_" + to_string(i);
|
||||||
|
auto worksheetNew = workbook_add_worksheet(workbook, tabName.c_str());
|
||||||
|
json data = loadResultData(Paths::results() + fileName);
|
||||||
|
auto report = ReportExcel(data, false, workbook, worksheetNew);
|
||||||
|
report.show();
|
||||||
|
hyperlink = "#table_" + to_string(i);
|
||||||
|
files[fileName] = hyperlink;
|
||||||
|
}
|
||||||
|
hyperlink += "!H" + to_string(i + 6);
|
||||||
|
string fileNameText = "=HYPERLINK(\"" + hyperlink + "\",\"" + fileName + "\")";
|
||||||
|
worksheet_write_formula(worksheet, row, 3, fileNameText.c_str(), efectiveStyle("text"));
|
||||||
hyperparameters = item.value().at(1).dump();
|
hyperparameters = item.value().at(1).dump();
|
||||||
if (hyperparameters.size() > hypSize) {
|
if (hyperparameters.size() > hypSize) {
|
||||||
hypSize = hyperparameters.size();
|
hypSize = hyperparameters.size();
|
||||||
@ -85,7 +111,6 @@ namespace platform {
|
|||||||
stringstream oss;
|
stringstream oss;
|
||||||
auto colName = getColumnName(2);
|
auto colName = getColumnName(2);
|
||||||
oss << "=sum(" << colName << "5:" << colName << row << ")";
|
oss << "=sum(" << colName << "5:" << colName << row << ")";
|
||||||
cout << "[" << oss.str() << "]" << endl;
|
|
||||||
worksheet_write_formula(worksheet, row, 2, oss.str().c_str(), styles["bodyHeader_odd"]);
|
worksheet_write_formula(worksheet, row, 2, oss.str().c_str(), styles["bodyHeader_odd"]);
|
||||||
// Set format
|
// Set format
|
||||||
worksheet_freeze_panes(worksheet, 4, 2);
|
worksheet_freeze_panes(worksheet, 4, 2);
|
||||||
|
@ -9,9 +9,9 @@ include_directories(${BayesNet_SOURCE_DIR}/lib/libxlsxwriter/include)
|
|||||||
add_executable(b_main b_main.cc Folding.cc Experiment.cc Datasets.cc Dataset.cc Models.cc ReportConsole.cc ReportBase.cc)
|
add_executable(b_main b_main.cc Folding.cc Experiment.cc Datasets.cc Dataset.cc Models.cc ReportConsole.cc ReportBase.cc)
|
||||||
add_executable(b_manage b_manage.cc Results.cc ManageResults.cc CommandParser.cc Result.cc ReportConsole.cc ReportExcel.cc ReportBase.cc Datasets.cc Dataset.cc ExcelFile.cc)
|
add_executable(b_manage b_manage.cc Results.cc ManageResults.cc CommandParser.cc Result.cc ReportConsole.cc ReportExcel.cc ReportBase.cc Datasets.cc Dataset.cc ExcelFile.cc)
|
||||||
add_executable(b_list b_list.cc Datasets.cc Dataset.cc)
|
add_executable(b_list b_list.cc Datasets.cc Dataset.cc)
|
||||||
add_executable(b_best b_best.cc BestResults.cc Result.cc Statistics.cc BestResultsExcel.cc ExcelFile.cc)
|
add_executable(b_best b_best.cc BestResults.cc Result.cc Statistics.cc BestResultsExcel.cc ReportExcel.cc ReportBase.cc Datasets.cc Dataset.cc ExcelFile.cc)
|
||||||
|
|
||||||
target_link_libraries(b_main BayesNet ArffFiles mdlp "${TORCH_LIBRARIES}")
|
target_link_libraries(b_main BayesNet ArffFiles mdlp "${TORCH_LIBRARIES}")
|
||||||
target_link_libraries(b_manage "${TORCH_LIBRARIES}" "${XLSXWRITER_LIB}" ArffFiles mdlp)
|
target_link_libraries(b_manage "${TORCH_LIBRARIES}" "${XLSXWRITER_LIB}" ArffFiles mdlp)
|
||||||
target_link_libraries(b_best Boost::boost "${XLSXWRITER_LIB}")
|
target_link_libraries(b_best Boost::boost "${XLSXWRITER_LIB}" "${TORCH_LIBRARIES}" ArffFiles mdlp)
|
||||||
target_link_libraries(b_list ArffFiles mdlp "${TORCH_LIBRARIES}")
|
target_link_libraries(b_list ArffFiles mdlp "${TORCH_LIBRARIES}")
|
@ -9,6 +9,10 @@ namespace platform {
|
|||||||
{
|
{
|
||||||
setDefault();
|
setDefault();
|
||||||
}
|
}
|
||||||
|
ExcelFile::ExcelFile(lxw_workbook* workbook, lxw_worksheet* worksheet) : workbook(workbook), worksheet(worksheet)
|
||||||
|
{
|
||||||
|
setDefault();
|
||||||
|
}
|
||||||
void ExcelFile::setDefault()
|
void ExcelFile::setDefault()
|
||||||
{
|
{
|
||||||
normalSize = 14; //font size for report body
|
normalSize = 14; //font size for report body
|
||||||
|
@ -18,6 +18,7 @@ namespace platform {
|
|||||||
public:
|
public:
|
||||||
ExcelFile();
|
ExcelFile();
|
||||||
ExcelFile(lxw_workbook* workbook);
|
ExcelFile(lxw_workbook* workbook);
|
||||||
|
ExcelFile(lxw_workbook* workbook, lxw_worksheet* worksheet);
|
||||||
lxw_workbook* getWorkbook();
|
lxw_workbook* getWorkbook();
|
||||||
protected:
|
protected:
|
||||||
void setProperties(string title);
|
void setProperties(string title);
|
||||||
|
@ -93,6 +93,7 @@ namespace platform {
|
|||||||
reporter.show();
|
reporter.show();
|
||||||
openExcel = true;
|
openExcel = true;
|
||||||
workbook = reporter.getWorkbook();
|
workbook = reporter.getWorkbook();
|
||||||
|
cout << "Adding sheet to " << Paths::excel() + Paths::excelResults() << endl;
|
||||||
} else {
|
} else {
|
||||||
ReportConsole reporter(data, compare);
|
ReportConsole reporter(data, compare);
|
||||||
reporter.show();
|
reporter.show();
|
||||||
|
@ -14,6 +14,7 @@ namespace platform {
|
|||||||
auto env = platform::DotEnv();
|
auto env = platform::DotEnv();
|
||||||
return env.get("source_data");
|
return env.get("source_data");
|
||||||
}
|
}
|
||||||
|
static std::string excelResults() { return "some_results.xlsx"; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
namespace platform {
|
namespace platform {
|
||||||
|
|
||||||
ReportExcel::ReportExcel(json data_, bool compare, lxw_workbook* workbook) : ReportBase(data_, compare), ExcelFile(workbook)
|
ReportExcel::ReportExcel(json data_, bool compare, lxw_workbook* workbook, lxw_worksheet* worksheet) : ReportBase(data_, compare), ExcelFile(workbook, worksheet)
|
||||||
{
|
{
|
||||||
createFile();
|
createFile();
|
||||||
}
|
}
|
||||||
@ -19,12 +19,8 @@ namespace platform {
|
|||||||
worksheet_set_column(worksheet, i, i, columns_sizes.at(i), NULL);
|
worksheet_set_column(worksheet, i, i, columns_sizes.at(i), NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void ReportExcel::createWorksheet()
|
||||||
void ReportExcel::createFile()
|
|
||||||
{
|
{
|
||||||
if (workbook == NULL) {
|
|
||||||
workbook = workbook_new((Paths::excel() + fileName).c_str());
|
|
||||||
}
|
|
||||||
const string name = data["model"].get<string>();
|
const string name = data["model"].get<string>();
|
||||||
string suffix = "";
|
string suffix = "";
|
||||||
string efectiveName;
|
string efectiveName;
|
||||||
@ -42,7 +38,16 @@ namespace platform {
|
|||||||
throw invalid_argument("Couldn't create sheet " + efectiveName);
|
throw invalid_argument("Couldn't create sheet " + efectiveName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cout << "Adding sheet " << efectiveName << " to " << Paths::excel() + fileName << endl;
|
}
|
||||||
|
|
||||||
|
void ReportExcel::createFile()
|
||||||
|
{
|
||||||
|
if (workbook == NULL) {
|
||||||
|
workbook = workbook_new((Paths::excel() + Paths::excelResults()).c_str());
|
||||||
|
}
|
||||||
|
if (worksheet == NULL) {
|
||||||
|
createWorksheet();
|
||||||
|
}
|
||||||
setProperties(data["title"].get<string>());
|
setProperties(data["title"].get<string>());
|
||||||
createFormats();
|
createFormats();
|
||||||
formatColumns();
|
formatColumns();
|
||||||
|
@ -9,11 +9,11 @@ namespace platform {
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
class ReportExcel : public ReportBase, public ExcelFile {
|
class ReportExcel : public ReportBase, public ExcelFile {
|
||||||
public:
|
public:
|
||||||
explicit ReportExcel(json data_, bool compare, lxw_workbook* workbook);
|
explicit ReportExcel(json data_, bool compare, lxw_workbook* workbook, lxw_worksheet* worksheet = NULL);
|
||||||
private:
|
private:
|
||||||
const string fileName = "some_results.xlsx";
|
|
||||||
void formatColumns();
|
void formatColumns();
|
||||||
void createFile();
|
void createFile();
|
||||||
|
void createWorksheet();
|
||||||
void closeFile();
|
void closeFile();
|
||||||
void header() override;
|
void header() override;
|
||||||
void body() override;
|
void body() override;
|
||||||
|
Loading…
Reference in New Issue
Block a user