diff --git a/CMakeLists.txt b/CMakeLists.txt index b6b2127..178e84b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,7 +90,7 @@ cmake_path(SET TEST_DATA_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests/data") configure_file(src/common/SourceData.h.in "${CMAKE_BINARY_DIR}/configured_files/include/SourceData.h") add_subdirectory(config) add_subdirectory(src) -# add_subdirectory(sample) +add_subdirectory(sample) file(GLOB Platform_SOURCES CONFIGURE_DEPENDS ${Platform_SOURCE_DIR}/src/*.cpp) # Testing diff --git a/sample/sample.cpp b/sample/sample.cpp index f831d2d..fd049b8 100644 --- a/sample/sample.cpp +++ b/sample/sample.cpp @@ -219,14 +219,14 @@ int main(int argc, char** argv) auto [Xtrain, ytrain] = extract_indices(train, Xd, y); auto [Xtest, ytest] = extract_indices(test, Xd, y); clf->fit(Xtrain, ytrain, features, className, states, smoothing); - std::cout << "Nodes: " << clf->getNumberOfNodes() << std::endl; + std::cout << "Nodes: " << clf->geb_managetNumberOfNodes() << std::endl; nodes += clf->getNumberOfNodes(); score_train = clf->score(Xtrain, ytrain); score_test = clf->score(Xtest, ytest); } if (dump_cpt) { std::cout << "--- CPT Tables ---" << std::endl; - clf->dump_cpt(); + std::cout << clf->dump_cpt(); } total_score_train += score_train; total_score += score_test; diff --git a/src/manage/ManageScreen.cpp b/src/manage/ManageScreen.cpp index 140dead..5e30c15 100644 --- a/src/manage/ManageScreen.cpp +++ b/src/manage/ManageScreen.cpp @@ -312,6 +312,34 @@ namespace platform { return "Reporting " + results.at(index).getFilename(); } } + void ManageScreen::changeModel(const int index) + { + std::cout << "Old model: " << results.at(index).getModel() << std::endl; + std::cout << "New model: "; + std::string newModel; + getline(std::cin, newModel); + if (newModel.empty()) { + list("Model not changed", Colors::YELLOW()); + return; + } + if (newModel == results.at(index).getModel()) { + list("Model already set to " + newModel, Colors::RED()); + return; + } + // Remove the old result file + std::string oldFile = Paths::results() + results.at(index).getFilename(); + std::filesystem::remove(oldFile); + // Actually change the model + results.at(index).setModel(newModel); + results.at(index).save(); + int newModelSize = static_cast(newModel.size()); + if (newModelSize > maxModel) { + maxModel = newModelSize; + header_lengths[2] = maxModel; + updateSize(rows, cols); + } + list("Model changed to " + newModel, Colors::GREEN()); + } std::pair ManageScreen::sortList() { std::vector> sortOptions = { @@ -372,6 +400,7 @@ namespace platform { {"list", 'l', false}, {"Delete", 'D', true}, {"datasets", 'd', false}, + {"change model", 'm', true}, {"hide", 'h', true}, {"sort", 's', false}, {"report", 'r', true}, @@ -498,6 +527,9 @@ namespace platform { paginator[static_cast(OutputType::EXPERIMENTS)].setTotal(results.size()); list(filename + " deleted!", Colors::RED()); break; + case 'm': + changeModel(index); + break; case 'h': { std::string status_message; @@ -544,7 +576,6 @@ namespace platform { break; case 't': { - std::string status_message; std::cout << "Title: " << results.at(index).getTitle() << std::endl; std::cout << "New title: "; std::string newTitle; @@ -552,8 +583,7 @@ namespace platform { if (!newTitle.empty()) { results.at(index).setTitle(newTitle); results.at(index).save(); - status_message = "Title changed to " + newTitle; - list(status_message, Colors::GREEN()); + list("Title changed to " + newTitle, Colors::GREEN()); break; } list("No title change!", Colors::YELLOW()); diff --git a/src/manage/ManageScreen.h b/src/manage/ManageScreen.h index 0e6ab28..40cedc6 100644 --- a/src/manage/ManageScreen.h +++ b/src/manage/ManageScreen.h @@ -27,6 +27,7 @@ namespace platform { void list_datasets(const std::string& status, const std::string& color); bool confirmAction(const std::string& intent, const std::string& fileName) const; std::string report(const int index, const bool excelReport); + void changeModel(const int index); std::string report_compared(); std::pair sortList(); std::string getVersions();