Separate commands from modules in folders
This commit is contained in:
@@ -78,6 +78,7 @@ message("XLSXWRITER_LIB=${XLSXWRITER_LIB}")
|
||||
|
||||
# Subdirectories
|
||||
# --------------
|
||||
set(Platform_MODULES ${Platform_SOURCE_DIR}/src/Platform/modules/)
|
||||
add_subdirectory(config)
|
||||
add_subdirectory(src/Platform)
|
||||
add_subdirectory(sample)
|
||||
|
@@ -10,5 +10,5 @@ include_directories(
|
||||
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include
|
||||
${CMAKE_BINARY_DIR}/configured_files/include
|
||||
)
|
||||
add_executable(PlatformSample sample.cc ${Platform_SOURCE_DIR}/src/Platform/Models.cc)
|
||||
add_executable(PlatformSample sample.cc ${Platform_MODULES}/Models.cc)
|
||||
target_link_libraries(PlatformSample PyClassifiers ArffFiles mdlp "${TORCH_LIBRARIES}")
|
@@ -4,7 +4,7 @@ include_directories(
|
||||
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/mdlp
|
||||
${Platform_SOURCE_DIR}/lib/PyClassifiers/lib/BayesNet/lib/json/include
|
||||
${Platform_SOURCE_DIR}/lib/PyClassifiers/src/PyClassifiers
|
||||
${Platform_SOURCE_DIR}/src/Platform
|
||||
${Platform_MODULES}
|
||||
${Platform_SOURCE_DIR}/lib/Files
|
||||
${Platform_SOURCE_DIR}/lib/mdlp
|
||||
${Platform_SOURCE_DIR}/lib/argparse/include
|
||||
@@ -15,11 +15,19 @@ include_directories(
|
||||
${CMAKE_BINARY_DIR}/configured_files/include
|
||||
)
|
||||
|
||||
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)
|
||||
add_executable(b_grid b_grid.cc GridSearch.cc GridData.cc HyperParameters.cc Datasets.cc Dataset.cc Models.cc)
|
||||
add_executable(b_list b_list.cc Datasets.cc Dataset.cc)
|
||||
add_executable(b_main b_main.cc Experiment.cc Datasets.cc Dataset.cc Models.cc HyperParameters.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)
|
||||
set(best_sources BestResults.cc Result.cc Statistics.cc BestResultsExcel.cc ReportExcel.cc ReportBase.cc Datasets.cc Dataset.cc ExcelFile.cc)
|
||||
list(TRANSFORM best_sources PREPEND ${Platform_MODULES})
|
||||
add_executable(b_best b_best.cc ${best_sources})
|
||||
set(grid_sources GridSearch.cc GridData.cc HyperParameters.cc Datasets.cc Dataset.cc Models.cc)
|
||||
list(TRANSFORM grid_sources PREPEND ${Platform_MODULES})
|
||||
add_executable(b_grid b_grid.cc ${grid_sources})
|
||||
add_executable(b_list b_list.cc ${Platform_MODULES}Datasets.cc ${Platform_MODULES}Dataset.cc)
|
||||
set(main_sources Experiment.cc Datasets.cc Dataset.cc Models.cc HyperParameters.cc ReportConsole.cc ReportBase.cc)
|
||||
list(TRANSFORM main_sources PREPEND ${Platform_MODULES})
|
||||
add_executable(b_main b_main.cc ${main_sources})
|
||||
set(manage_sources Results.cc ManageResults.cc CommandParser.cc Result.cc ReportConsole.cc ReportExcel.cc ReportBase.cc Datasets.cc Dataset.cc ExcelFile.cc)
|
||||
list(TRANSFORM manage_sources PREPEND ${Platform_MODULES})
|
||||
add_executable(b_manage b_manage.cc ${manage_sources})
|
||||
|
||||
target_link_libraries(b_best Boost::boost "${XLSXWRITER_LIB}" "${TORCH_LIBRARIES}" ArffFiles mdlp)
|
||||
target_link_libraries(b_grid PyClassifiers ${MPI_CXX_LIBRARIES} ArffFiles)
|
||||
|
@@ -7,7 +7,7 @@ if(ENABLE_TESTING)
|
||||
${Platform_SOURCE_DIR}/lib/Files
|
||||
${CMAKE_BINARY_DIR}/configured_files/include
|
||||
)
|
||||
set(TEST_SOURCES_PLATFORM TestUtils.cc)
|
||||
set(TEST_SOURCES_PLATFORM TestUtils.cc TestPlatform.cc)
|
||||
add_executable(${TEST_PLATFORM} ${TEST_SOURCES_PLATFORM})
|
||||
target_link_libraries(${TEST_PLATFORM} PUBLIC "${TORCH_LIBRARIES}" ArffFiles mdlp Catch2::Catch2WithMain)
|
||||
add_test(NAME ${TEST_PLATFORM} COMMAND ${TEST_PLATFORM})
|
||||
|
70
tests/TestPlatform.cc
Normal file
70
tests/TestPlatform.cc
Normal file
@@ -0,0 +1,70 @@
|
||||
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <catch2/catch_approx.hpp>
|
||||
#include <catch2/generators/catch_generators.hpp>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "TestUtils.h"
|
||||
|
||||
TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
|
||||
{
|
||||
map <pair<std::string, std::string>, float> scores = {
|
||||
// Diabetes
|
||||
{{"diabetes", "STree"}, 0.81641}, {{"diabetes", "ODTE"}, 0.84635}, {{"diabetes", "SVC"}, 0.76823}, {{"diabetes", "RandomForest"}, 1.0},
|
||||
// Ecoli
|
||||
{{"ecoli", "STree"}, 0.8125}, {{"ecoli", "ODTE"}, 0.84821}, {{"ecoli", "SVC"}, 0.89583}, {{"ecoli", "RandomForest"}, 1.0},
|
||||
// Glass
|
||||
{{"glass", "STree"}, 0.57009}, {{"glass", "ODTE"}, 0.77103}, {{"glass", "SVC"}, 0.35514}, {{"glass", "RandomForest"}, 1.0},
|
||||
// Iris
|
||||
{{"iris", "STree"}, 0.99333}, {{"iris", "ODTE"}, 0.98667}, {{"iris", "SVC"}, 0.97333}, {{"iris", "RandomForest"}, 1.0},
|
||||
};
|
||||
|
||||
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
|
||||
auto raw = RawDatasets(file_name, false);
|
||||
|
||||
SECTION("Test STree classifier (" + file_name + ")")
|
||||
{
|
||||
auto clf = pywrap::STree();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
auto score = clf.score(raw.Xt, raw.yt);
|
||||
REQUIRE(score == Catch::Approx(scores[{file_name, "STree"}]).epsilon(raw.epsilon));
|
||||
}
|
||||
SECTION("Test ODTE classifier (" + file_name + ")")
|
||||
{
|
||||
auto clf = pywrap::ODTE();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
auto score = clf.score(raw.Xt, raw.yt);
|
||||
REQUIRE(score == Catch::Approx(scores[{file_name, "ODTE"}]).epsilon(raw.epsilon));
|
||||
}
|
||||
SECTION("Test SVC classifier (" + file_name + ")")
|
||||
{
|
||||
auto clf = pywrap::SVC();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
auto score = clf.score(raw.Xt, raw.yt);
|
||||
REQUIRE(score == Catch::Approx(scores[{file_name, "SVC"}]).epsilon(raw.epsilon));
|
||||
}
|
||||
SECTION("Test RandomForest classifier (" + file_name + ")")
|
||||
{
|
||||
auto clf = pywrap::RandomForest();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
auto score = clf.score(raw.Xt, raw.yt);
|
||||
REQUIRE(score == Catch::Approx(scores[{file_name, "RandomForest"}]).epsilon(raw.epsilon));
|
||||
}
|
||||
}
|
||||
TEST_CASE("Classifiers features", "[PyClassifiers]")
|
||||
{
|
||||
auto raw = RawDatasets("iris", true);
|
||||
auto clf = pywrap::STree();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
REQUIRE(clf.getNumberOfNodes() == 3);
|
||||
REQUIRE(clf.getNumberOfEdges() == 2);
|
||||
}
|
||||
TEST_CASE("Get num features & num edges", "[PyClassifiers]")
|
||||
{
|
||||
auto raw = RawDatasets("iris", true);
|
||||
auto clf = pywrap::ODTE();
|
||||
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
|
||||
REQUIRE(clf.getNumberOfNodes() == 10);
|
||||
REQUIRE(clf.getNumberOfEdges() == 10);
|
||||
}
|
Reference in New Issue
Block a user