From ef3c74633cb714469237be4c45832548c4bdf3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Wed, 15 May 2024 11:28:09 +0200 Subject: [PATCH 01/21] Conditional Entropy test --- tests/TestBayesMetrics.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/TestBayesMetrics.cc b/tests/TestBayesMetrics.cc index b7d5c76..96fddd9 100644 --- a/tests/TestBayesMetrics.cc +++ b/tests/TestBayesMetrics.cc @@ -100,6 +100,25 @@ TEST_CASE("Entropy Test", "[Metrics]") REQUIRE(result == Catch::Approx(0.693147180559945).epsilon(raw.epsilon)); } TEST_CASE("Conditional Entropy", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + auto expected = std::map, double>{ + { { 0, 1 }, 1.32674 }, + { { 0, 2 }, 0.236253 }, + { { 0, 3 }, 0.1202 }, + { { 1, 2 }, 0.252551 }, + { { 1, 3 }, 0.10515 }, + { { 2, 3 }, 0.108323 }, + }; + for (int i = 0; i < raw.features.size() - 1; ++i) { + for (int j = i + 1; j < raw.features.size(); ++j) { + double result = metrics.conditionalEntropy(raw.dataset.index({ i, "..." }), raw.dataset.index({ j, "..." }), raw.yt, raw.weights); + REQUIRE(result == Catch::Approx(expected.at({ i, j })).epsilon(raw.epsilon)); + } + } +} +TEST_CASE("Conditional Mutual Information", "[Metrics]") { auto raw = RawDatasets("iris", true); bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); From 1f236a70db9d6d6938ebea821727dc22dba586f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Wed, 15 May 2024 11:53:17 +0200 Subject: [PATCH 02/21] Create BoostA2DE base class --- bayesnet/ensembles/BoostA2DE.cc | 89 ++++++++++++++ bayesnet/ensembles/BoostA2DE.h | 38 ++++++ bayesnet/ensembles/BoostAODE.h | 11 +- bayesnet/ensembles/boost.h | 13 ++ docs/BoostAODE.md | 2 +- tests/CMakeLists.txt | 3 +- tests/TestBoostA2DE.cc | 212 ++++++++++++++++++++++++++++++++ 7 files changed, 356 insertions(+), 12 deletions(-) create mode 100644 bayesnet/ensembles/BoostA2DE.cc create mode 100644 bayesnet/ensembles/BoostA2DE.h create mode 100644 bayesnet/ensembles/boost.h create mode 100644 tests/TestBoostA2DE.cc diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc new file mode 100644 index 0000000..aadb4c6 --- /dev/null +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -0,0 +1,89 @@ +// *************************************************************** +// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez +// SPDX-FileType: SOURCE +// SPDX-License-Identifier: MIT +// *************************************************************** + +#include +#include +#include +#include +#include +#include "bayesnet/feature_selection/CFS.h" +#include "bayesnet/feature_selection/FCBF.h" +#include "bayesnet/feature_selection/IWSS.h" +#include "BoostA2DE.h" + +namespace bayesnet { + + BoostA2DE::BoostA2DE(bool predict_voting) : Ensemble(predict_voting) + { + validHyperparameters = { + "maxModels", "bisection", "order", "convergence", "convergence_best", "threshold", + "select_features", "maxTolerance", "predict_voting", "block_update" + }; + + } + void BoostA2DE::buildModel(const torch::Tensor& weights) + { + models.clear(); + + } + void BoostA2DE::setHyperparameters(const nlohmann::json& hyperparameters_) + { + auto hyperparameters = hyperparameters_; + if (hyperparameters.contains("order")) { + std::vector algos = { Orders.ASC, Orders.DESC, Orders.RAND }; + order_algorithm = hyperparameters["order"]; + if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) { + throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]"); + } + hyperparameters.erase("order"); + } + if (hyperparameters.contains("convergence")) { + convergence = hyperparameters["convergence"]; + hyperparameters.erase("convergence"); + } + if (hyperparameters.contains("convergence_best")) { + convergence_best = hyperparameters["convergence_best"]; + hyperparameters.erase("convergence_best"); + } + if (hyperparameters.contains("bisection")) { + bisection = hyperparameters["bisection"]; + hyperparameters.erase("bisection"); + } + if (hyperparameters.contains("threshold")) { + threshold = hyperparameters["threshold"]; + hyperparameters.erase("threshold"); + } + if (hyperparameters.contains("maxTolerance")) { + maxTolerance = hyperparameters["maxTolerance"]; + if (maxTolerance < 1 || maxTolerance > 4) + throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]"); + hyperparameters.erase("maxTolerance"); + } + if (hyperparameters.contains("predict_voting")) { + predict_voting = hyperparameters["predict_voting"]; + hyperparameters.erase("predict_voting"); + } + if (hyperparameters.contains("select_features")) { + auto selectedAlgorithm = hyperparameters["select_features"]; + std::vector algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF }; + selectFeatures = true; + select_features_algorithm = selectedAlgorithm; + if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) { + throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]"); + } + hyperparameters.erase("select_features"); + } + if (hyperparameters.contains("block_update")) { + block_update = hyperparameters["block_update"]; + hyperparameters.erase("block_update"); + } + Classifier::setHyperparameters(hyperparameters); + } + std::vector BoostA2DE::graph(const std::string& title) const + { + return Ensemble::graph(title); + } +} \ No newline at end of file diff --git a/bayesnet/ensembles/BoostA2DE.h b/bayesnet/ensembles/BoostA2DE.h new file mode 100644 index 0000000..b9e9ad7 --- /dev/null +++ b/bayesnet/ensembles/BoostA2DE.h @@ -0,0 +1,38 @@ +// *************************************************************** +// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez +// SPDX-FileType: SOURCE +// SPDX-License-Identifier: MIT +// *************************************************************** + +#ifndef BOOSTA2DE_H +#define BOOSTA2DE_H +#include +#include "boost.h" +#include "bayesnet/classifiers/SPnDE.h" +#include "bayesnet/feature_selection/FeatureSelect.h" +#include "Ensemble.h" +namespace bayesnet { + class BoostA2DE : public Ensemble { + public: + explicit BoostA2DE(bool predict_voting = false); + virtual ~BoostA2DE() = default; + std::vector graph(const std::string& title = "BoostA2DE") const override; + void setHyperparameters(const nlohmann::json& hyperparameters_) override; + protected: + void buildModel(const torch::Tensor& weights) override; + private: + torch::Tensor X_train, y_train, X_test, y_test; + // Hyperparameters + bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble + int maxTolerance = 3; + std::string order_algorithm; // order to process the KBest features asc, desc, rand + bool convergence = true; //if true, stop when the model does not improve + bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy + bool selectFeatures = false; // if true, use feature selection + std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm + FeatureSelect* featureSelector = nullptr; + double threshold = -1; + bool block_update = false; + }; +} +#endif \ No newline at end of file diff --git a/bayesnet/ensembles/BoostAODE.h b/bayesnet/ensembles/BoostAODE.h index dac0004..c4f8844 100644 --- a/bayesnet/ensembles/BoostAODE.h +++ b/bayesnet/ensembles/BoostAODE.h @@ -9,18 +9,9 @@ #include #include "bayesnet/classifiers/SPODE.h" #include "bayesnet/feature_selection/FeatureSelect.h" +#include "boost.h" #include "Ensemble.h" namespace bayesnet { - const struct { - std::string CFS = "CFS"; - std::string FCBF = "FCBF"; - std::string IWSS = "IWSS"; - }SelectFeatures; - const struct { - std::string ASC = "asc"; - std::string DESC = "desc"; - std::string RAND = "rand"; - }Orders; class BoostAODE : public Ensemble { public: explicit BoostAODE(bool predict_voting = false); diff --git a/bayesnet/ensembles/boost.h b/bayesnet/ensembles/boost.h new file mode 100644 index 0000000..54d6ce7 --- /dev/null +++ b/bayesnet/ensembles/boost.h @@ -0,0 +1,13 @@ +#ifndef BOOST_H +#define BOOST_H +const struct { + std::string CFS = "CFS"; + std::string FCBF = "FCBF"; + std::string IWSS = "IWSS"; +}SelectFeatures; +const struct { + std::string ASC = "asc"; + std::string DESC = "desc"; + std::string RAND = "rand"; +}Orders; +#endif \ No newline at end of file diff --git a/docs/BoostAODE.md b/docs/BoostAODE.md index def453d..308d00c 100644 --- a/docs/BoostAODE.md +++ b/docs/BoostAODE.md @@ -27,4 +27,4 @@ The hyperparameters defined in the algorithm are: ## Operation -### [Algorithm](./algorithm.md) +### [Base Algorithm](./algorithm.md) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a878442..4befe44 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,7 +10,7 @@ if(ENABLE_TESTING) file(GLOB_RECURSE BayesNet_SOURCES "${BayesNet_SOURCE_DIR}/bayesnet/*.cc") add_executable(TestBayesNet TestBayesNetwork.cc TestBayesNode.cc TestBayesClassifier.cc TestBayesModels.cc TestBayesMetrics.cc TestFeatureSelection.cc TestBoostAODE.cc TestA2DE.cc - TestUtils.cc TestBayesEnsemble.cc TestModulesVersions.cc ${BayesNet_SOURCES}) + TestUtils.cc TestBayesEnsemble.cc TestModulesVersions.cc TestBoostA2DE.cc ${BayesNet_SOURCES}) target_link_libraries(TestBayesNet PUBLIC "${TORCH_LIBRARIES}" ArffFiles mdlp PRIVATE Catch2::Catch2WithMain) add_test(NAME BayesNetworkTest COMMAND TestBayesNet) add_test(NAME Network COMMAND TestBayesNet "[Network]") @@ -22,5 +22,6 @@ if(ENABLE_TESTING) add_test(NAME Models COMMAND TestBayesNet "[Models]") add_test(NAME BoostAODE COMMAND TestBayesNet "[BoostAODE]") add_test(NAME A2DE COMMAND TestBayesNet "[A2DE]") + add_test(NAME BoostA2DE COMMAND TestBayesNet "[BoostA2DE]") add_test(NAME Modules COMMAND TestBayesNet "[Modules]") endif(ENABLE_TESTING) diff --git a/tests/TestBoostA2DE.cc b/tests/TestBoostA2DE.cc new file mode 100644 index 0000000..1be717d --- /dev/null +++ b/tests/TestBoostA2DE.cc @@ -0,0 +1,212 @@ +// *************************************************************** +// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez +// SPDX-FileType: SOURCE +// SPDX-License-Identifier: MIT +// *************************************************************** + +#include +#include +#include +#include +#include "bayesnet/ensembles/BoostA2DE.h" +#include "TestUtils.h" + + +TEST_CASE("Feature_select CFS", "[BoostA2DE]") +{ + auto raw = RawDatasets("iris", true); + auto clf = bayesnet::BoostA2DE(); + clf.setHyperparameters({ {"select_features", "CFS"} }); + clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); + REQUIRE(clf.getNumberOfNodes() == 0); + REQUIRE(clf.getNumberOfEdges() == 0); + // REQUIRE(clf.getNotes().size() == 2); + // REQUIRE(clf.getNotes()[0] == "Used features in initialization: 6 of 9 with CFS"); + // REQUIRE(clf.getNotes()[1] == "Number of models: 9"); +} +// TEST_CASE("Feature_select IWSS", "[BoostAODE]") +// { +// auto raw = RawDatasets("glass", true); +// auto clf = bayesnet::BoostAODE(); +// clf.setHyperparameters({ {"select_features", "IWSS"}, {"threshold", 0.5 } }); +// clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); +// REQUIRE(clf.getNumberOfNodes() == 90); +// REQUIRE(clf.getNumberOfEdges() == 153); +// REQUIRE(clf.getNotes().size() == 2); +// REQUIRE(clf.getNotes()[0] == "Used features in initialization: 4 of 9 with IWSS"); +// REQUIRE(clf.getNotes()[1] == "Number of models: 9"); +// } +// TEST_CASE("Feature_select FCBF", "[BoostAODE]") +// { +// auto raw = RawDatasets("glass", true); +// auto clf = bayesnet::BoostAODE(); +// clf.setHyperparameters({ {"select_features", "FCBF"}, {"threshold", 1e-7 } }); +// clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); +// REQUIRE(clf.getNumberOfNodes() == 90); +// REQUIRE(clf.getNumberOfEdges() == 153); +// REQUIRE(clf.getNotes().size() == 2); +// REQUIRE(clf.getNotes()[0] == "Used features in initialization: 4 of 9 with FCBF"); +// REQUIRE(clf.getNotes()[1] == "Number of models: 9"); +// } +// TEST_CASE("Test used features in train note and score", "[BoostAODE]") +// { +// auto raw = RawDatasets("diabetes", true); +// auto clf = bayesnet::BoostAODE(true); +// clf.setHyperparameters({ +// {"order", "asc"}, +// {"convergence", true}, +// {"select_features","CFS"}, +// }); +// clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); +// REQUIRE(clf.getNumberOfNodes() == 72); +// REQUIRE(clf.getNumberOfEdges() == 120); +// REQUIRE(clf.getNotes().size() == 2); +// REQUIRE(clf.getNotes()[0] == "Used features in initialization: 6 of 8 with CFS"); +// REQUIRE(clf.getNotes()[1] == "Number of models: 8"); +// auto score = clf.score(raw.Xv, raw.yv); +// auto scoret = clf.score(raw.Xt, raw.yt); +// REQUIRE(score == Catch::Approx(0.809895813).epsilon(raw.epsilon)); +// REQUIRE(scoret == Catch::Approx(0.809895813).epsilon(raw.epsilon)); +// } +// TEST_CASE("Voting vs proba", "[BoostAODE]") +// { +// auto raw = RawDatasets("iris", true); +// auto clf = bayesnet::BoostAODE(false); +// clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); +// auto score_proba = clf.score(raw.Xv, raw.yv); +// auto pred_proba = clf.predict_proba(raw.Xv); +// clf.setHyperparameters({ +// {"predict_voting",true}, +// }); +// auto score_voting = clf.score(raw.Xv, raw.yv); +// auto pred_voting = clf.predict_proba(raw.Xv); +// REQUIRE(score_proba == Catch::Approx(0.97333).epsilon(raw.epsilon)); +// REQUIRE(score_voting == Catch::Approx(0.98).epsilon(raw.epsilon)); +// REQUIRE(pred_voting[83][2] == Catch::Approx(1.0).epsilon(raw.epsilon)); +// REQUIRE(pred_proba[83][2] == Catch::Approx(0.86121525).epsilon(raw.epsilon)); +// REQUIRE(clf.dump_cpt() == ""); +// REQUIRE(clf.topological_order() == std::vector()); +// } +// TEST_CASE("Order asc, desc & random", "[BoostAODE]") +// { +// auto raw = RawDatasets("glass", true); +// std::map scores{ +// {"asc", 0.83645f }, { "desc", 0.84579f }, { "rand", 0.84112 } +// }; +// for (const std::string& order : { "asc", "desc", "rand" }) { +// auto clf = bayesnet::BoostAODE(); +// clf.setHyperparameters({ +// {"order", order}, +// {"bisection", false}, +// {"maxTolerance", 1}, +// {"convergence", false}, +// }); +// clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); +// auto score = clf.score(raw.Xv, raw.yv); +// auto scoret = clf.score(raw.Xt, raw.yt); +// INFO("BoostAODE order: " + order); +// REQUIRE(score == Catch::Approx(scores[order]).epsilon(raw.epsilon)); +// REQUIRE(scoret == Catch::Approx(scores[order]).epsilon(raw.epsilon)); +// } +// } +// TEST_CASE("Oddities", "[BoostAODE]") +// { +// auto clf = bayesnet::BoostAODE(); +// auto raw = RawDatasets("iris", true); +// auto bad_hyper = nlohmann::json{ +// { { "order", "duck" } }, +// { { "select_features", "duck" } }, +// { { "maxTolerance", 0 } }, +// { { "maxTolerance", 5 } }, +// }; +// for (const auto& hyper : bad_hyper.items()) { +// INFO("BoostAODE hyper: " + hyper.value().dump()); +// REQUIRE_THROWS_AS(clf.setHyperparameters(hyper.value()), std::invalid_argument); +// } +// REQUIRE_THROWS_AS(clf.setHyperparameters({ {"maxTolerance", 0 } }), std::invalid_argument); +// auto bad_hyper_fit = nlohmann::json{ +// { { "select_features","IWSS" }, { "threshold", -0.01 } }, +// { { "select_features","IWSS" }, { "threshold", 0.51 } }, +// { { "select_features","FCBF" }, { "threshold", 1e-8 } }, +// { { "select_features","FCBF" }, { "threshold", 1.01 } }, +// }; +// for (const auto& hyper : bad_hyper_fit.items()) { +// INFO("BoostAODE hyper: " + hyper.value().dump()); +// clf.setHyperparameters(hyper.value()); +// REQUIRE_THROWS_AS(clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states), std::invalid_argument); +// } +// } + +// TEST_CASE("Bisection Best", "[BoostAODE]") +// { +// auto clf = bayesnet::BoostAODE(); +// auto raw = RawDatasets("kdd_JapaneseVowels", true, 1200, true, false); +// clf.setHyperparameters({ +// {"bisection", true}, +// {"maxTolerance", 3}, +// {"convergence", true}, +// {"block_update", false}, +// {"convergence_best", false}, +// }); +// clf.fit(raw.X_train, raw.y_train, raw.features, raw.className, raw.states); +// REQUIRE(clf.getNumberOfNodes() == 210); +// REQUIRE(clf.getNumberOfEdges() == 378); +// REQUIRE(clf.getNotes().size() == 1); +// REQUIRE(clf.getNotes().at(0) == "Number of models: 14"); +// auto score = clf.score(raw.X_test, raw.y_test); +// auto scoret = clf.score(raw.X_test, raw.y_test); +// REQUIRE(score == Catch::Approx(0.991666675f).epsilon(raw.epsilon)); +// REQUIRE(scoret == Catch::Approx(0.991666675f).epsilon(raw.epsilon)); +// } +// TEST_CASE("Bisection Best vs Last", "[BoostAODE]") +// { +// auto raw = RawDatasets("kdd_JapaneseVowels", true, 1500, true, false); +// auto clf = bayesnet::BoostAODE(true); +// auto hyperparameters = nlohmann::json{ +// {"bisection", true}, +// {"maxTolerance", 3}, +// {"convergence", true}, +// {"convergence_best", true}, +// }; +// clf.setHyperparameters(hyperparameters); +// clf.fit(raw.X_train, raw.y_train, raw.features, raw.className, raw.states); +// auto score_best = clf.score(raw.X_test, raw.y_test); +// REQUIRE(score_best == Catch::Approx(0.980000019f).epsilon(raw.epsilon)); +// // Now we will set the hyperparameter to use the last accuracy +// hyperparameters["convergence_best"] = false; +// clf.setHyperparameters(hyperparameters); +// clf.fit(raw.X_train, raw.y_train, raw.features, raw.className, raw.states); +// auto score_last = clf.score(raw.X_test, raw.y_test); +// REQUIRE(score_last == Catch::Approx(0.976666689f).epsilon(raw.epsilon)); +// } + +// TEST_CASE("Block Update", "[BoostAODE]") +// { +// auto clf = bayesnet::BoostAODE(); +// auto raw = RawDatasets("mfeat-factors", true, 500); +// clf.setHyperparameters({ +// {"bisection", true}, +// {"block_update", true}, +// {"maxTolerance", 3}, +// {"convergence", true}, +// }); +// clf.fit(raw.X_train, raw.y_train, raw.features, raw.className, raw.states); +// REQUIRE(clf.getNumberOfNodes() == 868); +// REQUIRE(clf.getNumberOfEdges() == 1724); +// REQUIRE(clf.getNotes().size() == 3); +// REQUIRE(clf.getNotes()[0] == "Convergence threshold reached & 15 models eliminated"); +// REQUIRE(clf.getNotes()[1] == "Used features in train: 19 of 216"); +// REQUIRE(clf.getNotes()[2] == "Number of models: 4"); +// auto score = clf.score(raw.X_test, raw.y_test); +// auto scoret = clf.score(raw.X_test, raw.y_test); +// REQUIRE(score == Catch::Approx(0.99f).epsilon(raw.epsilon)); +// REQUIRE(scoret == Catch::Approx(0.99f).epsilon(raw.epsilon)); +// // +// // std::cout << "Number of nodes " << clf.getNumberOfNodes() << std::endl; +// // std::cout << "Number of edges " << clf.getNumberOfEdges() << std::endl; +// // std::cout << "Notes size " << clf.getNotes().size() << std::endl; +// // for (auto note : clf.getNotes()) { +// // std::cout << note << std::endl; +// // } +// // std::cout << "Score " << score << std::endl; +// } \ No newline at end of file From 54496c68f1a4a070e654b429406b61bce8de5ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Wed, 15 May 2024 19:49:15 +0200 Subject: [PATCH 03/21] Create Boost class as Boost classifiers parent --- bayesnet/ensembles/Boost.cc | 214 ++++++++++++++++++++++++++++++++ bayesnet/ensembles/Boost.h | 51 ++++++++ bayesnet/ensembles/BoostA2DE.cc | 87 +++++-------- bayesnet/ensembles/BoostA2DE.h | 24 +--- bayesnet/ensembles/BoostAODE.cc | 213 +------------------------------ bayesnet/ensembles/BoostAODE.h | 23 +--- bayesnet/ensembles/boost.h | 13 -- bayesnet/utils/BayesMetrics.cc | 2 +- tests/CMakeLists.txt | 16 +-- 9 files changed, 318 insertions(+), 325 deletions(-) create mode 100644 bayesnet/ensembles/Boost.cc create mode 100644 bayesnet/ensembles/Boost.h delete mode 100644 bayesnet/ensembles/boost.h diff --git a/bayesnet/ensembles/Boost.cc b/bayesnet/ensembles/Boost.cc new file mode 100644 index 0000000..73d4adb --- /dev/null +++ b/bayesnet/ensembles/Boost.cc @@ -0,0 +1,214 @@ +// *************************************************************** +// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez +// SPDX-FileType: SOURCE +// SPDX-License-Identifier: MIT +// *************************************************************** +#include "bayesnet/feature_selection/CFS.h" +#include "bayesnet/feature_selection/FCBF.h" +#include "bayesnet/feature_selection/IWSS.h" +#include "Boost.h" + +namespace bayesnet { + Boost::Boost(bool predict_voting) : Ensemble(predict_voting) + { + validHyperparameters = { "order", "convergence", "convergence_best", "bisection", "threshold", "maxTolerance", + "predict_voting", "select_features", "block_update" }; + } + void Boost::setHyperparameters(const nlohmann::json& hyperparameters_) + { + auto hyperparameters = hyperparameters_; + if (hyperparameters.contains("order")) { + std::vector algos = { Orders.ASC, Orders.DESC, Orders.RAND }; + order_algorithm = hyperparameters["order"]; + if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) { + throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]"); + } + hyperparameters.erase("order"); + } + if (hyperparameters.contains("convergence")) { + convergence = hyperparameters["convergence"]; + hyperparameters.erase("convergence"); + } + if (hyperparameters.contains("convergence_best")) { + convergence_best = hyperparameters["convergence_best"]; + hyperparameters.erase("convergence_best"); + } + if (hyperparameters.contains("bisection")) { + bisection = hyperparameters["bisection"]; + hyperparameters.erase("bisection"); + } + if (hyperparameters.contains("threshold")) { + threshold = hyperparameters["threshold"]; + hyperparameters.erase("threshold"); + } + if (hyperparameters.contains("maxTolerance")) { + maxTolerance = hyperparameters["maxTolerance"]; + if (maxTolerance < 1 || maxTolerance > 4) + throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]"); + hyperparameters.erase("maxTolerance"); + } + if (hyperparameters.contains("predict_voting")) { + predict_voting = hyperparameters["predict_voting"]; + hyperparameters.erase("predict_voting"); + } + if (hyperparameters.contains("select_features")) { + auto selectedAlgorithm = hyperparameters["select_features"]; + std::vector algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF }; + selectFeatures = true; + select_features_algorithm = selectedAlgorithm; + if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) { + throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]"); + } + hyperparameters.erase("select_features"); + } + if (hyperparameters.contains("block_update")) { + block_update = hyperparameters["block_update"]; + hyperparameters.erase("block_update"); + } + Classifier::setHyperparameters(hyperparameters); + } + std::vector Boost::featureSelection(torch::Tensor& weights_) + { + int maxFeatures = 0; + if (select_features_algorithm == SelectFeatures.CFS) { + featureSelector = new CFS(dataset, features, className, maxFeatures, states.at(className).size(), weights_); + } else if (select_features_algorithm == SelectFeatures.IWSS) { + if (threshold < 0 || threshold >0.5) { + throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.IWSS + " [0, 0.5]"); + } + featureSelector = new IWSS(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold); + } else if (select_features_algorithm == SelectFeatures.FCBF) { + if (threshold < 1e-7 || threshold > 1) { + throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.FCBF + " [1e-7, 1]"); + } + featureSelector = new FCBF(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold); + } + featureSelector->fit(); + auto featuresUsed = featureSelector->getFeatures(); + delete featureSelector; + return featuresUsed; + } + std::tuple Boost::update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights) + { + bool terminate = false; + double alpha_t = 0; + auto mask_wrong = ypred != ytrain; + auto mask_right = ypred == ytrain; + auto masked_weights = weights * mask_wrong.to(weights.dtype()); + double epsilon_t = masked_weights.sum().item(); + if (epsilon_t > 0.5) { + // Inverse the weights policy (plot ln(wt)) + // "In each round of AdaBoost, there is a sanity check to ensure that the current base + // learner is better than random guess" (Zhi-Hua Zhou, 2012) + terminate = true; + } else { + double wt = (1 - epsilon_t) / epsilon_t; + alpha_t = epsilon_t == 0 ? 1 : 0.5 * log(wt); + // Step 3.2: Update weights for next classifier + // Step 3.2.1: Update weights of wrong samples + weights += mask_wrong.to(weights.dtype()) * exp(alpha_t) * weights; + // Step 3.2.2: Update weights of right samples + weights += mask_right.to(weights.dtype()) * exp(-alpha_t) * weights; + // Step 3.3: Normalise the weights + double totalWeights = torch::sum(weights).item(); + weights = weights / totalWeights; + } + return { weights, alpha_t, terminate }; + } + std::tuple Boost::update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights) + { + /* Update Block algorithm + k = # of models in block + n_models = # of models in ensemble to make predictions + n_models_bak = # models saved + models = vector of models to make predictions + models_bak = models not used to make predictions + significances_bak = backup of significances vector + + Case list + A) k = 1, n_models = 1 => n = 0 , n_models = n + k + B) k = 1, n_models = n + 1 => n_models = n + k + C) k > 1, n_models = k + 1 => n= 1, n_models = n + k + D) k > 1, n_models = k => n = 0, n_models = n + k + E) k > 1, n_models = k + n => n_models = n + k + + A, D) n=0, k > 0, n_models == k + 1. n_models_bak <- n_models + 2. significances_bak <- significances + 3. significances = vector(k, 1) + 4. Don’t move any classifiers out of models + 5. n_models <- k + 6. Make prediction, compute alpha, update weights + 7. Don’t restore any classifiers to models + 8. significances <- significances_bak + 9. Update last k significances + 10. n_models <- n_models_bak + + B, C, E) n > 0, k > 0, n_models == n + k + 1. n_models_bak <- n_models + 2. significances_bak <- significances + 3. significances = vector(k, 1) + 4. Move first n classifiers to models_bak + 5. n_models <- k + 6. Make prediction, compute alpha, update weights + 7. Insert classifiers in models_bak to be the first n models + 8. significances <- significances_bak + 9. Update last k significances + 10. n_models <- n_models_bak + */ + // + // Make predict with only the last k models + // + std::unique_ptr model; + std::vector> models_bak; + // 1. n_models_bak <- n_models 2. significances_bak <- significances + auto significance_bak = significanceModels; + auto n_models_bak = n_models; + // 3. significances = vector(k, 1) + significanceModels = std::vector(k, 1.0); + // 4. Move first n classifiers to models_bak + // backup the first n_models - k models (if n_models == k, don't backup any) + for (int i = 0; i < n_models - k; ++i) { + model = std::move(models[0]); + models.erase(models.begin()); + models_bak.push_back(std::move(model)); + } + assert(models.size() == k); + // 5. n_models <- k + n_models = k; + // 6. Make prediction, compute alpha, update weights + auto ypred = predict(X_train); + // + // Update weights + // + double alpha_t; + bool terminate; + std::tie(weights, alpha_t, terminate) = update_weights(y_train, ypred, weights); + // + // Restore the models if needed + // + // 7. Insert classifiers in models_bak to be the first n models + // if n_models_bak == k, don't restore any, because none of them were moved + if (k != n_models_bak) { + // Insert in the same order as they were extracted + int bak_size = models_bak.size(); + for (int i = 0; i < bak_size; ++i) { + model = std::move(models_bak[bak_size - 1 - i]); + models_bak.erase(models_bak.end() - 1); + models.insert(models.begin(), std::move(model)); + } + } + // 8. significances <- significances_bak + significanceModels = significance_bak; + // + // Update the significance of the last k models + // + // 9. Update last k significances + for (int i = 0; i < k; ++i) { + significanceModels[n_models_bak - k + i] = alpha_t; + } + // 10. n_models <- n_models_bak + n_models = n_models_bak; + return { weights, alpha_t, terminate }; + } +} \ No newline at end of file diff --git a/bayesnet/ensembles/Boost.h b/bayesnet/ensembles/Boost.h new file mode 100644 index 0000000..d00728b --- /dev/null +++ b/bayesnet/ensembles/Boost.h @@ -0,0 +1,51 @@ +// *************************************************************** +// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez +// SPDX-FileType: SOURCE +// SPDX-License-Identifier: MIT +// *************************************************************** + +#ifndef BOOST_H +#define BOOST_H +#include +#include +#include +#include +#include +#include "Ensemble.h" +#include "bayesnet/feature_selection/FeatureSelect.h" +namespace bayesnet { + const struct { + std::string CFS = "CFS"; + std::string FCBF = "FCBF"; + std::string IWSS = "IWSS"; + }SelectFeatures; + const struct { + std::string ASC = "asc"; + std::string DESC = "desc"; + std::string RAND = "rand"; + }Orders; + class Boost : public Ensemble { + public: + explicit Boost(bool predict_voting = false); + virtual ~Boost() = default; + void setHyperparameters(const nlohmann::json& hyperparameters_) override; + protected: + std::vector featureSelection(torch::Tensor& weights_); + std::tuple update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights); + std::tuple update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights); + torch::Tensor X_train, y_train, X_test, y_test; + // Hyperparameters + bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble + int maxTolerance = 3; + std::string order_algorithm; // order to process the KBest features asc, desc, rand + bool convergence = true; //if true, stop when the model does not improve + bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy + bool selectFeatures = false; // if true, use feature selection + std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm + FeatureSelect* featureSelector = nullptr; + double threshold = -1; + bool block_update = false; + + }; +} +#endif \ No newline at end of file diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index aadb4c6..9ad85e9 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -16,71 +16,44 @@ namespace bayesnet { - BoostA2DE::BoostA2DE(bool predict_voting) : Ensemble(predict_voting) + BoostA2DE::BoostA2DE(bool predict_voting) : Boost(predict_voting) { - validHyperparameters = { - "maxModels", "bisection", "order", "convergence", "convergence_best", "threshold", - "select_features", "maxTolerance", "predict_voting", "block_update" - }; - } void BoostA2DE::buildModel(const torch::Tensor& weights) { + // Models shall be built in trainModel models.clear(); + significanceModels.clear(); + n_models = 0; + // Prepare the validation dataset + auto y_ = dataset.index({ -1, "..." }); + if (convergence) { + // Prepare train & validation sets from train data + auto fold = folding::StratifiedKFold(5, y_, 271); + auto [train, test] = fold.getFold(0); + auto train_t = torch::tensor(train); + auto test_t = torch::tensor(test); + // Get train and validation sets + X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t }); + y_train = dataset.index({ -1, train_t }); + X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t }); + y_test = dataset.index({ -1, test_t }); + dataset = X_train; + m = X_train.size(1); + auto n_classes = states.at(className).size(); + // Build dataset with train data + buildDataset(y_train); + metrics = Metrics(dataset, features, className, n_classes); + } else { + // Use all data to train + X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }); + y_train = y_; + } } - void BoostA2DE::setHyperparameters(const nlohmann::json& hyperparameters_) + void BoostA2DE::trainModel(const torch::Tensor& weights) { - auto hyperparameters = hyperparameters_; - if (hyperparameters.contains("order")) { - std::vector algos = { Orders.ASC, Orders.DESC, Orders.RAND }; - order_algorithm = hyperparameters["order"]; - if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) { - throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]"); - } - hyperparameters.erase("order"); - } - if (hyperparameters.contains("convergence")) { - convergence = hyperparameters["convergence"]; - hyperparameters.erase("convergence"); - } - if (hyperparameters.contains("convergence_best")) { - convergence_best = hyperparameters["convergence_best"]; - hyperparameters.erase("convergence_best"); - } - if (hyperparameters.contains("bisection")) { - bisection = hyperparameters["bisection"]; - hyperparameters.erase("bisection"); - } - if (hyperparameters.contains("threshold")) { - threshold = hyperparameters["threshold"]; - hyperparameters.erase("threshold"); - } - if (hyperparameters.contains("maxTolerance")) { - maxTolerance = hyperparameters["maxTolerance"]; - if (maxTolerance < 1 || maxTolerance > 4) - throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]"); - hyperparameters.erase("maxTolerance"); - } - if (hyperparameters.contains("predict_voting")) { - predict_voting = hyperparameters["predict_voting"]; - hyperparameters.erase("predict_voting"); - } - if (hyperparameters.contains("select_features")) { - auto selectedAlgorithm = hyperparameters["select_features"]; - std::vector algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF }; - selectFeatures = true; - select_features_algorithm = selectedAlgorithm; - if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) { - throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]"); - } - hyperparameters.erase("select_features"); - } - if (hyperparameters.contains("block_update")) { - block_update = hyperparameters["block_update"]; - hyperparameters.erase("block_update"); - } - Classifier::setHyperparameters(hyperparameters); + } std::vector BoostA2DE::graph(const std::string& title) const { diff --git a/bayesnet/ensembles/BoostA2DE.h b/bayesnet/ensembles/BoostA2DE.h index b9e9ad7..c81531e 100644 --- a/bayesnet/ensembles/BoostA2DE.h +++ b/bayesnet/ensembles/BoostA2DE.h @@ -6,33 +6,19 @@ #ifndef BOOSTA2DE_H #define BOOSTA2DE_H -#include -#include "boost.h" +#include +#include #include "bayesnet/classifiers/SPnDE.h" -#include "bayesnet/feature_selection/FeatureSelect.h" -#include "Ensemble.h" +#include "Boost.h" namespace bayesnet { - class BoostA2DE : public Ensemble { + class BoostA2DE : public Boost { public: explicit BoostA2DE(bool predict_voting = false); virtual ~BoostA2DE() = default; std::vector graph(const std::string& title = "BoostA2DE") const override; - void setHyperparameters(const nlohmann::json& hyperparameters_) override; protected: void buildModel(const torch::Tensor& weights) override; - private: - torch::Tensor X_train, y_train, X_test, y_test; - // Hyperparameters - bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble - int maxTolerance = 3; - std::string order_algorithm; // order to process the KBest features asc, desc, rand - bool convergence = true; //if true, stop when the model does not improve - bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy - bool selectFeatures = false; // if true, use feature selection - std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm - FeatureSelect* featureSelector = nullptr; - double threshold = -1; - bool block_update = false; + void trainModel(const torch::Tensor& weights) override; }; } #endif \ No newline at end of file diff --git a/bayesnet/ensembles/BoostAODE.cc b/bayesnet/ensembles/BoostAODE.cc index 1e855c9..a1a748a 100644 --- a/bayesnet/ensembles/BoostAODE.cc +++ b/bayesnet/ensembles/BoostAODE.cc @@ -9,21 +9,13 @@ #include #include #include -#include "bayesnet/feature_selection/CFS.h" -#include "bayesnet/feature_selection/FCBF.h" -#include "bayesnet/feature_selection/IWSS.h" #include "BoostAODE.h" #include "lib/log/loguru.cpp" namespace bayesnet { - BoostAODE::BoostAODE(bool predict_voting) : Ensemble(predict_voting) + BoostAODE::BoostAODE(bool predict_voting) : Boost(predict_voting) { - validHyperparameters = { - "maxModels", "bisection", "order", "convergence", "convergence_best", "threshold", - "select_features", "maxTolerance", "predict_voting", "block_update" - }; - } void BoostAODE::buildModel(const torch::Tensor& weights) { @@ -56,214 +48,19 @@ namespace bayesnet { y_train = y_; } } - void BoostAODE::setHyperparameters(const nlohmann::json& hyperparameters_) - { - auto hyperparameters = hyperparameters_; - if (hyperparameters.contains("order")) { - std::vector algos = { Orders.ASC, Orders.DESC, Orders.RAND }; - order_algorithm = hyperparameters["order"]; - if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) { - throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]"); - } - hyperparameters.erase("order"); - } - if (hyperparameters.contains("convergence")) { - convergence = hyperparameters["convergence"]; - hyperparameters.erase("convergence"); - } - if (hyperparameters.contains("convergence_best")) { - convergence_best = hyperparameters["convergence_best"]; - hyperparameters.erase("convergence_best"); - } - if (hyperparameters.contains("bisection")) { - bisection = hyperparameters["bisection"]; - hyperparameters.erase("bisection"); - } - if (hyperparameters.contains("threshold")) { - threshold = hyperparameters["threshold"]; - hyperparameters.erase("threshold"); - } - if (hyperparameters.contains("maxTolerance")) { - maxTolerance = hyperparameters["maxTolerance"]; - if (maxTolerance < 1 || maxTolerance > 4) - throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]"); - hyperparameters.erase("maxTolerance"); - } - if (hyperparameters.contains("predict_voting")) { - predict_voting = hyperparameters["predict_voting"]; - hyperparameters.erase("predict_voting"); - } - if (hyperparameters.contains("select_features")) { - auto selectedAlgorithm = hyperparameters["select_features"]; - std::vector algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF }; - selectFeatures = true; - select_features_algorithm = selectedAlgorithm; - if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) { - throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]"); - } - hyperparameters.erase("select_features"); - } - if (hyperparameters.contains("block_update")) { - block_update = hyperparameters["block_update"]; - hyperparameters.erase("block_update"); - } - Classifier::setHyperparameters(hyperparameters); - } - std::tuple update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights) - { - bool terminate = false; - double alpha_t = 0; - auto mask_wrong = ypred != ytrain; - auto mask_right = ypred == ytrain; - auto masked_weights = weights * mask_wrong.to(weights.dtype()); - double epsilon_t = masked_weights.sum().item(); - if (epsilon_t > 0.5) { - // Inverse the weights policy (plot ln(wt)) - // "In each round of AdaBoost, there is a sanity check to ensure that the current base - // learner is better than random guess" (Zhi-Hua Zhou, 2012) - terminate = true; - } else { - double wt = (1 - epsilon_t) / epsilon_t; - alpha_t = epsilon_t == 0 ? 1 : 0.5 * log(wt); - // Step 3.2: Update weights for next classifier - // Step 3.2.1: Update weights of wrong samples - weights += mask_wrong.to(weights.dtype()) * exp(alpha_t) * weights; - // Step 3.2.2: Update weights of right samples - weights += mask_right.to(weights.dtype()) * exp(-alpha_t) * weights; - // Step 3.3: Normalise the weights - double totalWeights = torch::sum(weights).item(); - weights = weights / totalWeights; - } - return { weights, alpha_t, terminate }; - } - std::tuple BoostAODE::update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights) - { - /* Update Block algorithm - k = # of models in block - n_models = # of models in ensemble to make predictions - n_models_bak = # models saved - models = vector of models to make predictions - models_bak = models not used to make predictions - significances_bak = backup of significances vector - - Case list - A) k = 1, n_models = 1 => n = 0 , n_models = n + k - B) k = 1, n_models = n + 1 => n_models = n + k - C) k > 1, n_models = k + 1 => n= 1, n_models = n + k - D) k > 1, n_models = k => n = 0, n_models = n + k - E) k > 1, n_models = k + n => n_models = n + k - - A, D) n=0, k > 0, n_models == k - 1. n_models_bak <- n_models - 2. significances_bak <- significances - 3. significances = vector(k, 1) - 4. Don’t move any classifiers out of models - 5. n_models <- k - 6. Make prediction, compute alpha, update weights - 7. Don’t restore any classifiers to models - 8. significances <- significances_bak - 9. Update last k significances - 10. n_models <- n_models_bak - - B, C, E) n > 0, k > 0, n_models == n + k - 1. n_models_bak <- n_models - 2. significances_bak <- significances - 3. significances = vector(k, 1) - 4. Move first n classifiers to models_bak - 5. n_models <- k - 6. Make prediction, compute alpha, update weights - 7. Insert classifiers in models_bak to be the first n models - 8. significances <- significances_bak - 9. Update last k significances - 10. n_models <- n_models_bak - */ - // - // Make predict with only the last k models - // - std::unique_ptr model; - std::vector> models_bak; - // 1. n_models_bak <- n_models 2. significances_bak <- significances - auto significance_bak = significanceModels; - auto n_models_bak = n_models; - // 3. significances = vector(k, 1) - significanceModels = std::vector(k, 1.0); - // 4. Move first n classifiers to models_bak - // backup the first n_models - k models (if n_models == k, don't backup any) - for (int i = 0; i < n_models - k; ++i) { - model = std::move(models[0]); - models.erase(models.begin()); - models_bak.push_back(std::move(model)); - } - assert(models.size() == k); - // 5. n_models <- k - n_models = k; - // 6. Make prediction, compute alpha, update weights - auto ypred = predict(X_train); - // - // Update weights - // - double alpha_t; - bool terminate; - std::tie(weights, alpha_t, terminate) = update_weights(y_train, ypred, weights); - // - // Restore the models if needed - // - // 7. Insert classifiers in models_bak to be the first n models - // if n_models_bak == k, don't restore any, because none of them were moved - if (k != n_models_bak) { - // Insert in the same order as they were extracted - int bak_size = models_bak.size(); - for (int i = 0; i < bak_size; ++i) { - model = std::move(models_bak[bak_size - 1 - i]); - models_bak.erase(models_bak.end() - 1); - models.insert(models.begin(), std::move(model)); - } - } - // 8. significances <- significances_bak - significanceModels = significance_bak; - // - // Update the significance of the last k models - // - // 9. Update last k significances - for (int i = 0; i < k; ++i) { - significanceModels[n_models_bak - k + i] = alpha_t; - } - // 10. n_models <- n_models_bak - n_models = n_models_bak; - return { weights, alpha_t, terminate }; - } std::vector BoostAODE::initializeModels() { - std::vector featuresUsed; torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); - int maxFeatures = 0; - if (select_features_algorithm == SelectFeatures.CFS) { - featureSelector = new CFS(dataset, features, className, maxFeatures, states.at(className).size(), weights_); - } else if (select_features_algorithm == SelectFeatures.IWSS) { - if (threshold < 0 || threshold >0.5) { - throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.IWSS + " [0, 0.5]"); - } - featureSelector = new IWSS(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold); - } else if (select_features_algorithm == SelectFeatures.FCBF) { - if (threshold < 1e-7 || threshold > 1) { - throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.FCBF + " [1e-7, 1]"); - } - featureSelector = new FCBF(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold); - } - featureSelector->fit(); - auto cfsFeatures = featureSelector->getFeatures(); - auto scores = featureSelector->getScores(); - for (const int& feature : cfsFeatures) { - featuresUsed.push_back(feature); + std::vector featuresSelected = featureSelection(weights_); + for (const int& feature : featuresSelected) { std::unique_ptr model = std::make_unique(feature); model->fit(dataset, features, className, states, weights_); models.push_back(std::move(model)); significanceModels.push_back(1.0); // They will be updated later in trainModel n_models++; } - notes.push_back("Used features in initialization: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm); - delete featureSelector; - return featuresUsed; + notes.push_back("Used features in initialization: " + std::to_string(featuresSelected.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm); + return featuresSelected; } void BoostAODE::trainModel(const torch::Tensor& weights) { diff --git a/bayesnet/ensembles/BoostAODE.h b/bayesnet/ensembles/BoostAODE.h index c4f8844..d6da098 100644 --- a/bayesnet/ensembles/BoostAODE.h +++ b/bayesnet/ensembles/BoostAODE.h @@ -6,36 +6,21 @@ #ifndef BOOSTAODE_H #define BOOSTAODE_H -#include +#include +#include #include "bayesnet/classifiers/SPODE.h" -#include "bayesnet/feature_selection/FeatureSelect.h" -#include "boost.h" -#include "Ensemble.h" +#include "Boost.h" namespace bayesnet { - class BoostAODE : public Ensemble { + class BoostAODE : public Boost { public: explicit BoostAODE(bool predict_voting = false); virtual ~BoostAODE() = default; std::vector graph(const std::string& title = "BoostAODE") const override; - void setHyperparameters(const nlohmann::json& hyperparameters_) override; protected: void buildModel(const torch::Tensor& weights) override; void trainModel(const torch::Tensor& weights) override; private: - std::tuple update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights); std::vector initializeModels(); - torch::Tensor X_train, y_train, X_test, y_test; - // Hyperparameters - bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble - int maxTolerance = 3; - std::string order_algorithm; // order to process the KBest features asc, desc, rand - bool convergence = true; //if true, stop when the model does not improve - bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy - bool selectFeatures = false; // if true, use feature selection - std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm - FeatureSelect* featureSelector = nullptr; - double threshold = -1; - bool block_update = false; }; } #endif \ No newline at end of file diff --git a/bayesnet/ensembles/boost.h b/bayesnet/ensembles/boost.h deleted file mode 100644 index 54d6ce7..0000000 --- a/bayesnet/ensembles/boost.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef BOOST_H -#define BOOST_H -const struct { - std::string CFS = "CFS"; - std::string FCBF = "FCBF"; - std::string IWSS = "IWSS"; -}SelectFeatures; -const struct { - std::string ASC = "asc"; - std::string DESC = "desc"; - std::string RAND = "rand"; -}Orders; -#endif \ No newline at end of file diff --git a/bayesnet/utils/BayesMetrics.cc b/bayesnet/utils/BayesMetrics.cc index 3e63038..c863704 100644 --- a/bayesnet/utils/BayesMetrics.cc +++ b/bayesnet/utils/BayesMetrics.cc @@ -187,7 +187,7 @@ namespace bayesnet { auto [x, c, y] = keyJoint; auto keyMarginal = std::make_tuple(x, c); - double p_xc = marginalCount[keyMarginal] / totalWeight; + //double p_xc = marginalCount[keyMarginal] / totalWeight; double p_y_given_xc = jointFreq / marginalCount[keyMarginal]; if (p_y_given_xc > 0) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4befe44..99249fc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,15 +13,15 @@ if(ENABLE_TESTING) TestUtils.cc TestBayesEnsemble.cc TestModulesVersions.cc TestBoostA2DE.cc ${BayesNet_SOURCES}) target_link_libraries(TestBayesNet PUBLIC "${TORCH_LIBRARIES}" ArffFiles mdlp PRIVATE Catch2::Catch2WithMain) add_test(NAME BayesNetworkTest COMMAND TestBayesNet) - add_test(NAME Network COMMAND TestBayesNet "[Network]") - add_test(NAME Node COMMAND TestBayesNet "[Node]") - add_test(NAME Metrics COMMAND TestBayesNet "[Metrics]") - add_test(NAME FeatureSelection COMMAND TestBayesNet "[FeatureSelection]") - add_test(NAME Classifier COMMAND TestBayesNet "[Classifier]") - add_test(NAME Ensemble COMMAND TestBayesNet "[Ensemble]") - add_test(NAME Models COMMAND TestBayesNet "[Models]") - add_test(NAME BoostAODE COMMAND TestBayesNet "[BoostAODE]") add_test(NAME A2DE COMMAND TestBayesNet "[A2DE]") add_test(NAME BoostA2DE COMMAND TestBayesNet "[BoostA2DE]") + add_test(NAME BoostAODE COMMAND TestBayesNet "[BoostAODE]") + add_test(NAME Classifier COMMAND TestBayesNet "[Classifier]") + add_test(NAME Ensemble COMMAND TestBayesNet "[Ensemble]") + add_test(NAME FeatureSelection COMMAND TestBayesNet "[FeatureSelection]") + add_test(NAME Metrics COMMAND TestBayesNet "[Metrics]") + add_test(NAME Models COMMAND TestBayesNet "[Models]") add_test(NAME Modules COMMAND TestBayesNet "[Modules]") + add_test(NAME Network COMMAND TestBayesNet "[Network]") + add_test(NAME Node COMMAND TestBayesNet "[Node]") endif(ENABLE_TESTING) From 8784a24898eb89b717df8378a747f400d29dc900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Wed, 15 May 2024 20:00:44 +0200 Subject: [PATCH 04/21] Extract buildModel method to parent class in Boost --- bayesnet/ensembles/Boost.cc | 32 +++++++++++++++++++++++++++++++ bayesnet/ensembles/Boost.h | 1 + bayesnet/ensembles/BoostA2DE.cc | 32 ------------------------------- bayesnet/ensembles/BoostA2DE.h | 1 - bayesnet/ensembles/BoostAODE.cc | 34 ++------------------------------- bayesnet/ensembles/BoostAODE.h | 1 - 6 files changed, 35 insertions(+), 66 deletions(-) diff --git a/bayesnet/ensembles/Boost.cc b/bayesnet/ensembles/Boost.cc index 73d4adb..a582811 100644 --- a/bayesnet/ensembles/Boost.cc +++ b/bayesnet/ensembles/Boost.cc @@ -3,6 +3,7 @@ // SPDX-FileType: SOURCE // SPDX-License-Identifier: MIT // *************************************************************** +#include #include "bayesnet/feature_selection/CFS.h" #include "bayesnet/feature_selection/FCBF.h" #include "bayesnet/feature_selection/IWSS.h" @@ -67,6 +68,37 @@ namespace bayesnet { } Classifier::setHyperparameters(hyperparameters); } + void Boost::buildModel(const torch::Tensor& weights) + { + // Models shall be built in trainModel + models.clear(); + significanceModels.clear(); + n_models = 0; + // Prepare the validation dataset + auto y_ = dataset.index({ -1, "..." }); + if (convergence) { + // Prepare train & validation sets from train data + auto fold = folding::StratifiedKFold(5, y_, 271); + auto [train, test] = fold.getFold(0); + auto train_t = torch::tensor(train); + auto test_t = torch::tensor(test); + // Get train and validation sets + X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t }); + y_train = dataset.index({ -1, train_t }); + X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t }); + y_test = dataset.index({ -1, test_t }); + dataset = X_train; + m = X_train.size(1); + auto n_classes = states.at(className).size(); + // Build dataset with train data + buildDataset(y_train); + metrics = Metrics(dataset, features, className, n_classes); + } else { + // Use all data to train + X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }); + y_train = y_; + } + } std::vector Boost::featureSelection(torch::Tensor& weights_) { int maxFeatures = 0; diff --git a/bayesnet/ensembles/Boost.h b/bayesnet/ensembles/Boost.h index d00728b..2594bcb 100644 --- a/bayesnet/ensembles/Boost.h +++ b/bayesnet/ensembles/Boost.h @@ -31,6 +31,7 @@ namespace bayesnet { void setHyperparameters(const nlohmann::json& hyperparameters_) override; protected: std::vector featureSelection(torch::Tensor& weights_); + void buildModel(const torch::Tensor& weights) override; std::tuple update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights); std::tuple update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights); torch::Tensor X_train, y_train, X_test, y_test; diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index 9ad85e9..77f2971 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -18,38 +18,6 @@ namespace bayesnet { BoostA2DE::BoostA2DE(bool predict_voting) : Boost(predict_voting) { - } - void BoostA2DE::buildModel(const torch::Tensor& weights) - { - // Models shall be built in trainModel - models.clear(); - significanceModels.clear(); - n_models = 0; - // Prepare the validation dataset - auto y_ = dataset.index({ -1, "..." }); - if (convergence) { - // Prepare train & validation sets from train data - auto fold = folding::StratifiedKFold(5, y_, 271); - auto [train, test] = fold.getFold(0); - auto train_t = torch::tensor(train); - auto test_t = torch::tensor(test); - // Get train and validation sets - X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t }); - y_train = dataset.index({ -1, train_t }); - X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t }); - y_test = dataset.index({ -1, test_t }); - dataset = X_train; - m = X_train.size(1); - auto n_classes = states.at(className).size(); - // Build dataset with train data - buildDataset(y_train); - metrics = Metrics(dataset, features, className, n_classes); - } else { - // Use all data to train - X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }); - y_train = y_; - } - } void BoostA2DE::trainModel(const torch::Tensor& weights) { diff --git a/bayesnet/ensembles/BoostA2DE.h b/bayesnet/ensembles/BoostA2DE.h index c81531e..34cfe24 100644 --- a/bayesnet/ensembles/BoostA2DE.h +++ b/bayesnet/ensembles/BoostA2DE.h @@ -17,7 +17,6 @@ namespace bayesnet { virtual ~BoostA2DE() = default; std::vector graph(const std::string& title = "BoostA2DE") const override; protected: - void buildModel(const torch::Tensor& weights) override; void trainModel(const torch::Tensor& weights) override; }; } diff --git a/bayesnet/ensembles/BoostAODE.cc b/bayesnet/ensembles/BoostAODE.cc index a1a748a..e4ea907 100644 --- a/bayesnet/ensembles/BoostAODE.cc +++ b/bayesnet/ensembles/BoostAODE.cc @@ -4,11 +4,11 @@ // SPDX-License-Identifier: MIT // *************************************************************** +#include #include #include #include #include -#include #include "BoostAODE.h" #include "lib/log/loguru.cpp" @@ -17,37 +17,7 @@ namespace bayesnet { BoostAODE::BoostAODE(bool predict_voting) : Boost(predict_voting) { } - void BoostAODE::buildModel(const torch::Tensor& weights) - { - // Models shall be built in trainModel - models.clear(); - significanceModels.clear(); - n_models = 0; - // Prepare the validation dataset - auto y_ = dataset.index({ -1, "..." }); - if (convergence) { - // Prepare train & validation sets from train data - auto fold = folding::StratifiedKFold(5, y_, 271); - auto [train, test] = fold.getFold(0); - auto train_t = torch::tensor(train); - auto test_t = torch::tensor(test); - // Get train and validation sets - X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t }); - y_train = dataset.index({ -1, train_t }); - X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t }); - y_test = dataset.index({ -1, test_t }); - dataset = X_train; - m = X_train.size(1); - auto n_classes = states.at(className).size(); - // Build dataset with train data - buildDataset(y_train); - metrics = Metrics(dataset, features, className, n_classes); - } else { - // Use all data to train - X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }); - y_train = y_; - } - } + std::vector BoostAODE::initializeModels() { torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); diff --git a/bayesnet/ensembles/BoostAODE.h b/bayesnet/ensembles/BoostAODE.h index d6da098..8c613a9 100644 --- a/bayesnet/ensembles/BoostAODE.h +++ b/bayesnet/ensembles/BoostAODE.h @@ -17,7 +17,6 @@ namespace bayesnet { virtual ~BoostAODE() = default; std::vector graph(const std::string& title = "BoostAODE") const override; protected: - void buildModel(const torch::Tensor& weights) override; void trainModel(const torch::Tensor& weights) override; private: std::vector initializeModels(); From 2e3e0e0fc285f2363d8c6f2ed5c2a10cb4589d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 16 May 2024 11:17:21 +0200 Subject: [PATCH 05/21] Add selectKParis method --- bayesnet/ensembles/BoostA2DE.cc | 142 ++++++++++++++++++++++++++++++++ bayesnet/ensembles/BoostA2DE.h | 2 + bayesnet/ensembles/BoostAODE.cc | 22 +++-- bayesnet/ensembles/BoostAODE.h | 1 + bayesnet/utils/BayesMetrics.cc | 38 +++++++++ bayesnet/utils/BayesMetrics.h | 5 +- tests/TestBoostA2DE.cc | 34 +++++--- tests/TestBoostAODE.cc | 6 +- 8 files changed, 224 insertions(+), 26 deletions(-) diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index 77f2971..7948923 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -19,9 +19,151 @@ namespace bayesnet { BoostA2DE::BoostA2DE(bool predict_voting) : Boost(predict_voting) { } + std::vector BoostA2DE::initializeModels() + { + torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); + std::vector featuresSelected = featureSelection(weights_); + if (featuresSelected.size() < 2) { + notes.push_back("No features selected in initialization"); + status = ERROR; + return std::vector(); + } + for (int i = 0; i < featuresSelected.size() - 1; i++) { + for (int j = i + 1; j < featuresSelected.size(); j++) { + auto parents = { featuresSelected[i], featuresSelected[j] }; + std::unique_ptr model = std::make_unique(parents); + model->fit(dataset, features, className, states, weights_); + models.push_back(std::move(model)); + significanceModels.push_back(1.0); // They will be updated later in trainModel + n_models++; + } + } + notes.push_back("Used features in initialization: " + std::to_string(featuresSelected.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm); + return featuresSelected; + } void BoostA2DE::trainModel(const torch::Tensor& weights) { + // + // Logging setup + // + // loguru::set_thread_name("BoostA2DE"); + // loguru::g_stderr_verbosity = loguru::Verbosity_OFF; + // loguru::add_file("boostA2DE.log", loguru::Truncate, loguru::Verbosity_MAX); + // // Algorithm based on the adaboost algorithm for classification + // // as explained in Ensemble methods (Zhi-Hua Zhou, 2012) + // fitted = true; + // double alpha_t = 0; + // torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); + // bool finished = false; + // std::vector featuresUsed; + // if (selectFeatures) { + // featuresUsed = initializeModels(); + // auto ypred = predict(X_train); + // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); + // // Update significance of the models + // for (int i = 0; i < n_models; ++i) { + // significanceModels[i] = alpha_t; + // } + // if (finished) { + // return; + // } + // } + // int numItemsPack = 0; // The counter of the models inserted in the current pack + // // Variables to control the accuracy finish condition + // double priorAccuracy = 0.0; + // double improvement = 1.0; + // double convergence_threshold = 1e-4; + // int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold + // // Step 0: Set the finish condition + // // epsilon sub t > 0.5 => inverse the weights policy + // // validation error is not decreasing + // // run out of features + // bool ascending = order_algorithm == Orders.ASC; + // std::mt19937 g{ 173 }; + // while (!finished) { + // // Step 1: Build ranking with mutual information + // auto pairSelection = metrics.SelectKBestWeighted(weights_, ascending, n); // Get all the features sorted + // if (order_algorithm == Orders.RAND) { + // std::shuffle(featureSelection.begin(), featureSelection.end(), g); + // } + // // Remove used features + // featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x) + // { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}), + // end(featureSelection) + // ); + // int k = bisection ? pow(2, tolerance) : 1; + // int counter = 0; // The model counter of the current pack + // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); + // while (counter++ < k && featureSelection.size() > 0) { + // auto feature = featureSelection[0]; + // featureSelection.erase(featureSelection.begin()); + // std::unique_ptr model; + // model = std::make_unique(feature); + // model->fit(dataset, features, className, states, weights_); + // alpha_t = 0.0; + // if (!block_update) { + // auto ypred = model->predict(X_train); + // // Step 3.1: Compute the classifier amout of say + // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); + // } + // // Step 3.4: Store classifier and its accuracy to weigh its future vote + // numItemsPack++; + // featuresUsed.push_back(feature); + // models.push_back(std::move(model)); + // significanceModels.push_back(alpha_t); + // n_models++; + // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); + // } + // if (block_update) { + // std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); + // } + // if (convergence && !finished) { + // auto y_val_predict = predict(X_test); + // double accuracy = (y_val_predict == y_test).sum().item() / (double)y_test.size(0); + // if (priorAccuracy == 0) { + // priorAccuracy = accuracy; + // } else { + // improvement = accuracy - priorAccuracy; + // } + // if (improvement < convergence_threshold) { + // VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); + // tolerance = 0; // Reset the counter if the model performs better + // numItemsPack = 0; + // } + // if (convergence_best) { + // // Keep the best accuracy until now as the prior accuracy + // priorAccuracy = std::max(accuracy, priorAccuracy); + // } else { + // // Keep the last accuray obtained as the prior accuracy + // priorAccuracy = accuracy; + // } + // } + // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); + // finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size(); + // } + // if (tolerance > maxTolerance) { + // if (numItemsPack < n_models) { + // notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated"); + // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models); + // for (int i = 0; i < numItemsPack; ++i) { + // significanceModels.pop_back(); + // models.pop_back(); + // n_models--; + // } + // } else { + // notes.push_back("Convergence threshold reached & 0 models eliminated"); + // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack); + // } + // } + // if (featuresUsed.size() != features.size()) { + // notes.push_back("Used features in train: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size())); + // status = WARNING; + // } + // notes.push_back("Number of models: " + std::to_string(n_models)); } std::vector BoostA2DE::graph(const std::string& title) const { diff --git a/bayesnet/ensembles/BoostA2DE.h b/bayesnet/ensembles/BoostA2DE.h index 34cfe24..ff56b79 100644 --- a/bayesnet/ensembles/BoostA2DE.h +++ b/bayesnet/ensembles/BoostA2DE.h @@ -18,6 +18,8 @@ namespace bayesnet { std::vector graph(const std::string& title = "BoostA2DE") const override; protected: void trainModel(const torch::Tensor& weights) override; + private: + std::vector initializeModels(); }; } #endif \ No newline at end of file diff --git a/bayesnet/ensembles/BoostAODE.cc b/bayesnet/ensembles/BoostAODE.cc index e4ea907..30137df 100644 --- a/bayesnet/ensembles/BoostAODE.cc +++ b/bayesnet/ensembles/BoostAODE.cc @@ -10,14 +10,12 @@ #include #include #include "BoostAODE.h" -#include "lib/log/loguru.cpp" namespace bayesnet { BoostAODE::BoostAODE(bool predict_voting) : Boost(predict_voting) { } - std::vector BoostAODE::initializeModels() { torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); @@ -37,9 +35,9 @@ namespace bayesnet { // // Logging setup // - loguru::set_thread_name("BoostAODE"); - loguru::g_stderr_verbosity = loguru::Verbosity_OFF; - loguru::add_file("boostAODE.log", loguru::Truncate, loguru::Verbosity_MAX); + // loguru::set_thread_name("BoostAODE"); + // loguru::g_stderr_verbosity = loguru::Verbosity_OFF; + // loguru::add_file("boostAODE.log", loguru::Truncate, loguru::Verbosity_MAX); // Algorithm based on the adaboost algorithm for classification // as explained in Ensemble methods (Zhi-Hua Zhou, 2012) @@ -85,7 +83,7 @@ namespace bayesnet { ); int k = bisection ? pow(2, tolerance) : 1; int counter = 0; // The model counter of the current pack - VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); + // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); while (counter++ < k && featureSelection.size() > 0) { auto feature = featureSelection[0]; featureSelection.erase(featureSelection.begin()); @@ -104,7 +102,7 @@ namespace bayesnet { models.push_back(std::move(model)); significanceModels.push_back(alpha_t); n_models++; - VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); + // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); } if (block_update) { std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); @@ -118,10 +116,10 @@ namespace bayesnet { improvement = accuracy - priorAccuracy; } if (improvement < convergence_threshold) { - VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); + // VLOG_SCOPE_F(3, "* (improvement>=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); tolerance = 0; // Reset the counter if the model performs better numItemsPack = 0; } @@ -133,13 +131,13 @@ namespace bayesnet { priorAccuracy = accuracy; } } - VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); + // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size(); } if (tolerance > maxTolerance) { if (numItemsPack < n_models) { notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated"); - VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models); + // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models); for (int i = 0; i < numItemsPack; ++i) { significanceModels.pop_back(); models.pop_back(); @@ -147,7 +145,7 @@ namespace bayesnet { } } else { notes.push_back("Convergence threshold reached & 0 models eliminated"); - VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack); + // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack); } } if (featuresUsed.size() != features.size()) { diff --git a/bayesnet/ensembles/BoostAODE.h b/bayesnet/ensembles/BoostAODE.h index 8c613a9..e4eb250 100644 --- a/bayesnet/ensembles/BoostAODE.h +++ b/bayesnet/ensembles/BoostAODE.h @@ -10,6 +10,7 @@ #include #include "bayesnet/classifiers/SPODE.h" #include "Boost.h" + namespace bayesnet { class BoostAODE : public Boost { public: diff --git a/bayesnet/utils/BayesMetrics.cc b/bayesnet/utils/BayesMetrics.cc index c863704..43b0dec 100644 --- a/bayesnet/utils/BayesMetrics.cc +++ b/bayesnet/utils/BayesMetrics.cc @@ -30,6 +30,44 @@ namespace bayesnet { } samples.index_put_({ -1, "..." }, torch::tensor(labels, torch::kInt32)); } + std::vector> Metrics::SelectKPairs(const torch::Tensor& weights, bool ascending, unsigned k) + { + // Return the K Best features + auto n = features.size(); + if (k == 0) { + k = n; + } + // compute scores + scoresKPairs.clear(); + pairsKBest.clear(); + auto label = samples.index({ -1, "..." }); + // for (int i = 0; i < n; ++i) { + // for (int j = i + 1; j < n; ++j) { + // scoresKBest.push_back(mutualInformation(samples.index({ i, "..." }), samples.index({ j, "..." }), weights)); + // featuresKBest.push_back(i); + // featuresKBest.push_back(j); + // } + // } + // // sort & reduce scores and features + // if (ascending) { + // sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j) + // { return scoresKBest[i] < scoresKBest[j]; }); + // sort(scoresKBest.begin(), scoresKBest.end(), std::less()); + // if (k < n) { + // for (int i = 0; i < n - k; ++i) { + // featuresKBest.erase(featuresKBest.begin()); + // scoresKBest.erase(scoresKBest.begin()); + // } + // } + // } else { + // sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j) + // { return scoresKBest[i] > scoresKBest[j]; }); + // sort(scoresKBest.begin(), scoresKBest.end(), std::greater()); + // featuresKBest.resize(k); + // scoresKBest.resize(k); + // } + return pairsKBest; + } std::vector Metrics::SelectKBestWeighted(const torch::Tensor& weights, bool ascending, unsigned k) { // Return the K Best features diff --git a/bayesnet/utils/BayesMetrics.h b/bayesnet/utils/BayesMetrics.h index 6c20852..f24a496 100644 --- a/bayesnet/utils/BayesMetrics.h +++ b/bayesnet/utils/BayesMetrics.h @@ -16,6 +16,7 @@ namespace bayesnet { Metrics(const torch::Tensor& samples, const std::vector& features, const std::string& className, const int classNumStates); Metrics(const std::vector>& vsamples, const std::vector& labels, const std::vector& features, const std::string& className, const int classNumStates); std::vector SelectKBestWeighted(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); + std::vector> SelectKPairs(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); std::vector getScoresKBest() const; double mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights); double conditionalMutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& labels, const torch::Tensor& weights); @@ -41,7 +42,7 @@ namespace bayesnet { } return result; } - template + template T pop_first(std::vector& v) { T temp = v[0]; @@ -52,6 +53,8 @@ namespace bayesnet { int classNumStates = 0; std::vector scoresKBest; std::vector featuresKBest; // sorted indices of the features + std::vector> pairsKBest; // sorted indices of the pairs + std::map, double> scoresKPairs; double conditionalEntropy(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights); }; } diff --git a/tests/TestBoostA2DE.cc b/tests/TestBoostA2DE.cc index 1be717d..4b870f7 100644 --- a/tests/TestBoostA2DE.cc +++ b/tests/TestBoostA2DE.cc @@ -8,21 +8,35 @@ #include #include #include +#include "bayesnet/utils/BayesMetrics.h" #include "bayesnet/ensembles/BoostA2DE.h" #include "TestUtils.h" -TEST_CASE("Feature_select CFS", "[BoostA2DE]") +TEST_CASE("Build basic model", "[BoostA2DE]") { - auto raw = RawDatasets("iris", true); - auto clf = bayesnet::BoostA2DE(); - clf.setHyperparameters({ {"select_features", "CFS"} }); - clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); - REQUIRE(clf.getNumberOfNodes() == 0); - REQUIRE(clf.getNumberOfEdges() == 0); - // REQUIRE(clf.getNotes().size() == 2); - // REQUIRE(clf.getNotes()[0] == "Used features in initialization: 6 of 9 with CFS"); - // REQUIRE(clf.getNotes()[1] == "Number of models: 9"); + auto raw = RawDatasets("diabetes", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + auto expected = std::map, double>{ + { { 0, 1 }, 0.0 }, + { { 0, 2 }, 0.287696 }, + { { 0, 3 }, 0.403749 }, + { { 1, 2 }, 1.17112 }, + { { 1, 3 }, 1.31852 }, + { { 2, 3 }, 0.210068 }, + }; + for (int i = 0; i < raw.features.size() - 1; ++i) { + for (int j = i + 1; j < raw.features.size(); ++j) { + double result = metrics.conditionalMutualInformation(raw.dataset.index({ i, "..." }), raw.dataset.index({ j, "..." }), raw.yt, raw.weights); + // REQUIRE(result == Catch::Approx(expected.at({ i, j })).epsilon(raw.epsilon)); + auto clf = bayesnet::SPnDE({ i, j }); + clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); + auto score = clf.score(raw.Xt, raw.yt); + std::cout << " i " << i << " j " << j << " cmi " + << std::setw(8) << std::setprecision(6) << fixed << result + << " score = " << score << std::endl; + } + } } // TEST_CASE("Feature_select IWSS", "[BoostAODE]") // { diff --git a/tests/TestBoostAODE.cc b/tests/TestBoostAODE.cc index 4f92110..b434055 100644 --- a/tests/TestBoostAODE.cc +++ b/tests/TestBoostAODE.cc @@ -104,7 +104,7 @@ TEST_CASE("Order asc, desc & random", "[BoostAODE]") clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); auto score = clf.score(raw.Xv, raw.yv); auto scoret = clf.score(raw.Xt, raw.yt); - INFO("BoostAODE order: " + order); + INFO("BoostAODE order: " << order); REQUIRE(score == Catch::Approx(scores[order]).epsilon(raw.epsilon)); REQUIRE(scoret == Catch::Approx(scores[order]).epsilon(raw.epsilon)); } @@ -120,7 +120,7 @@ TEST_CASE("Oddities", "[BoostAODE]") { { "maxTolerance", 5 } }, }; for (const auto& hyper : bad_hyper.items()) { - INFO("BoostAODE hyper: " + hyper.value().dump()); + INFO("BoostAODE hyper: " << hyper.value().dump()); REQUIRE_THROWS_AS(clf.setHyperparameters(hyper.value()), std::invalid_argument); } REQUIRE_THROWS_AS(clf.setHyperparameters({ {"maxTolerance", 0 } }), std::invalid_argument); @@ -131,7 +131,7 @@ TEST_CASE("Oddities", "[BoostAODE]") { { "select_features","FCBF" }, { "threshold", 1.01 } }, }; for (const auto& hyper : bad_hyper_fit.items()) { - INFO("BoostAODE hyper: " + hyper.value().dump()); + INFO("BoostAODE hyper: " << hyper.value().dump()); clf.setHyperparameters(hyper.value()); REQUIRE_THROWS_AS(clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states), std::invalid_argument); } From cccaa6e0af26571e6205c35bf9068c7089bb899d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 16 May 2024 13:46:38 +0200 Subject: [PATCH 06/21] Complete selectKPairs method & test --- bayesnet/utils/BayesMetrics.cc | 65 ++++++++++++++++++---------------- bayesnet/utils/BayesMetrics.h | 7 ++-- tests/TestBayesMetrics.cc | 54 ++++++++++++++++++++++++++++ tests/TestBayesModels.cc | 4 +-- tests/TestBoostAODE.cc | 1 + 5 files changed, 96 insertions(+), 35 deletions(-) diff --git a/bayesnet/utils/BayesMetrics.cc b/bayesnet/utils/BayesMetrics.cc index 43b0dec..6083662 100644 --- a/bayesnet/utils/BayesMetrics.cc +++ b/bayesnet/utils/BayesMetrics.cc @@ -34,38 +34,40 @@ namespace bayesnet { { // Return the K Best features auto n = features.size(); - if (k == 0) { - k = n; - } // compute scores scoresKPairs.clear(); pairsKBest.clear(); - auto label = samples.index({ -1, "..." }); - // for (int i = 0; i < n; ++i) { - // for (int j = i + 1; j < n; ++j) { - // scoresKBest.push_back(mutualInformation(samples.index({ i, "..." }), samples.index({ j, "..." }), weights)); - // featuresKBest.push_back(i); - // featuresKBest.push_back(j); - // } - // } - // // sort & reduce scores and features - // if (ascending) { - // sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j) - // { return scoresKBest[i] < scoresKBest[j]; }); - // sort(scoresKBest.begin(), scoresKBest.end(), std::less()); - // if (k < n) { - // for (int i = 0; i < n - k; ++i) { - // featuresKBest.erase(featuresKBest.begin()); - // scoresKBest.erase(scoresKBest.begin()); - // } - // } - // } else { - // sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j) - // { return scoresKBest[i] > scoresKBest[j]; }); - // sort(scoresKBest.begin(), scoresKBest.end(), std::greater()); - // featuresKBest.resize(k); - // scoresKBest.resize(k); - // } + auto labels = samples.index({ -1, "..." }); + for (int i = 0; i < n - 1; ++i) { + for (int j = i + 1; j < n; ++j) { + auto key = std::make_pair(i, j); + auto value = conditionalMutualInformation(samples.index({ i, "..." }), samples.index({ j, "..." }), labels, weights); + scoresKPairs.push_back({ key, value }); + } + } + // sort scores + if (ascending) { + sort(scoresKPairs.begin(), scoresKPairs.end(), [](auto& a, auto& b) + { return a.second < b.second; }); + + } else { + sort(scoresKPairs.begin(), scoresKPairs.end(), [](auto& a, auto& b) + { return a.second > b.second; }); + } + for (auto& [pairs, score] : scoresKPairs) { + pairsKBest.push_back(pairs); + } + if (k != 0) { + if (ascending) { + for (int i = 0; i < n - k; ++i) { + pairsKBest.erase(pairsKBest.begin()); + scoresKPairs.erase(scoresKPairs.begin()); + } + } else { + pairsKBest.resize(k); + scoresKPairs.resize(k); + } + } return pairsKBest; } std::vector Metrics::SelectKBestWeighted(const torch::Tensor& weights, bool ascending, unsigned k) @@ -107,7 +109,10 @@ namespace bayesnet { { return scoresKBest; } - + std::vector, double>> Metrics::getScoresKPairs() const + { + return scoresKPairs; + } torch::Tensor Metrics::conditionalEdge(const torch::Tensor& weights) { auto result = std::vector(); diff --git a/bayesnet/utils/BayesMetrics.h b/bayesnet/utils/BayesMetrics.h index f24a496..0e58b82 100644 --- a/bayesnet/utils/BayesMetrics.h +++ b/bayesnet/utils/BayesMetrics.h @@ -18,6 +18,7 @@ namespace bayesnet { std::vector SelectKBestWeighted(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); std::vector> SelectKPairs(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); std::vector getScoresKBest() const; + std::vector, double>> getScoresKPairs() const; double mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights); double conditionalMutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& labels, const torch::Tensor& weights); torch::Tensor conditionalEdge(const torch::Tensor& weights); @@ -34,7 +35,7 @@ namespace bayesnet { std::vector> doCombinations(const std::vector& source) { std::vector> result; - for (int i = 0; i < source.size(); ++i) { + for (int i = 0; i < source.size() - 1; ++i) { T temp = source[i]; for (int j = i + 1; j < source.size(); ++j) { result.push_back({ temp, source[j] }); @@ -42,7 +43,7 @@ namespace bayesnet { } return result; } - template + template T pop_first(std::vector& v) { T temp = v[0]; @@ -54,7 +55,7 @@ namespace bayesnet { std::vector scoresKBest; std::vector featuresKBest; // sorted indices of the features std::vector> pairsKBest; // sorted indices of the pairs - std::map, double> scoresKPairs; + std::vector, double>> scoresKPairs; double conditionalEntropy(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights); }; } diff --git a/tests/TestBayesMetrics.cc b/tests/TestBayesMetrics.cc index 96fddd9..b40e3f2 100644 --- a/tests/TestBayesMetrics.cc +++ b/tests/TestBayesMetrics.cc @@ -136,4 +136,58 @@ TEST_CASE("Conditional Mutual Information", "[Metrics]") REQUIRE(result == Catch::Approx(expected.at({ i, j })).epsilon(raw.epsilon)); } } +} +TEST_CASE("Select K Pairs descending", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + auto results = metrics.SelectKPairs(raw.weights, false); + auto expected = std::vector, double>>{ + { { 1, 3 }, 1.31852 }, + { { 1, 2 }, 1.17112 }, + { { 0, 3 }, 0.403749 }, + { { 0, 2 }, 0.287696 }, + { { 2, 3 }, 0.210068 }, + { { 0, 1 }, 0.0 }, + }; + auto scores = metrics.getScoresKPairs(); + for (int i = 0; i < results.size(); ++i) { + auto result = results[i]; + auto expect = expected[i]; + auto score = scores[i]; + REQUIRE(result.first == expect.first.first); + REQUIRE(result.second == expect.first.second); + REQUIRE(score.first.first == expect.first.first); + REQUIRE(score.first.second == expect.first.second); + REQUIRE(score.second == Catch::Approx(expect.second).epsilon(raw.epsilon)); + } + REQUIRE(results.size() == 6); + REQUIRE(scores.size() == 6); +} +TEST_CASE("Select K Pairs ascending", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + auto results = metrics.SelectKPairs(raw.weights, true); + auto expected = std::vector, double>>{ + { { 0, 1 }, 0.0 }, + { { 2, 3 }, 0.210068 }, + { { 0, 2 }, 0.287696 }, + { { 0, 3 }, 0.403749 }, + { { 1, 2 }, 1.17112 }, + { { 1, 3 }, 1.31852 }, + }; + auto scores = metrics.getScoresKPairs(); + for (int i = 0; i < results.size(); ++i) { + auto result = results[i]; + auto expect = expected[i]; + auto score = scores[i]; + REQUIRE(result.first == expect.first.first); + REQUIRE(result.second == expect.first.second); + REQUIRE(score.first.first == expect.first.first); + REQUIRE(score.first.second == expect.first.second); + REQUIRE(score.second == Catch::Approx(expect.second).epsilon(raw.epsilon)); + } + REQUIRE(results.size() == 6); + REQUIRE(scores.size() == 6); } \ No newline at end of file diff --git a/tests/TestBayesModels.cc b/tests/TestBayesModels.cc index 5c97f60..b5ee426 100644 --- a/tests/TestBayesModels.cc +++ b/tests/TestBayesModels.cc @@ -56,14 +56,14 @@ TEST_CASE("Test Bayesian Classifiers score & version", "[Models]") auto raw = RawDatasets(file_name, discretize); clf->fit(raw.Xt, raw.yt, raw.features, raw.className, raw.states); auto score = clf->score(raw.Xt, raw.yt); - INFO("Classifier: " + name + " File: " + file_name); + INFO("Classifier: " << name << " File: " << file_name); REQUIRE(score == Catch::Approx(scores[{file_name, name}]).epsilon(raw.epsilon)); REQUIRE(clf->getStatus() == bayesnet::NORMAL); } } SECTION("Library check version") { - INFO("Checking version of " + name + " classifier"); + INFO("Checking version of " << name << " classifier"); REQUIRE(clf->getVersion() == ACTUAL_VERSION); } delete clf; diff --git a/tests/TestBoostAODE.cc b/tests/TestBoostAODE.cc index b434055..66fa7fb 100644 --- a/tests/TestBoostAODE.cc +++ b/tests/TestBoostAODE.cc @@ -8,6 +8,7 @@ #include #include #include +#include #include "bayesnet/ensembles/BoostAODE.h" #include "TestUtils.h" From 677ec5613d825acf4d5fe43accca0bf6b686366e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 16 May 2024 14:18:45 +0200 Subject: [PATCH 07/21] Add features used to selectKPairs --- bayesnet/ensembles/BoostA2DE.cc | 190 ++++++++++++++++---------------- bayesnet/utils/BayesMetrics.cc | 13 ++- bayesnet/utils/BayesMetrics.h | 2 +- tests/TestBayesMetrics.cc | 79 ++++++++++++- 4 files changed, 183 insertions(+), 101 deletions(-) diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index 7948923..887c1a2 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -50,101 +50,101 @@ namespace bayesnet { // loguru::g_stderr_verbosity = loguru::Verbosity_OFF; // loguru::add_file("boostA2DE.log", loguru::Truncate, loguru::Verbosity_MAX); - // // Algorithm based on the adaboost algorithm for classification - // // as explained in Ensemble methods (Zhi-Hua Zhou, 2012) - // fitted = true; - // double alpha_t = 0; - // torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); - // bool finished = false; - // std::vector featuresUsed; - // if (selectFeatures) { - // featuresUsed = initializeModels(); - // auto ypred = predict(X_train); - // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); - // // Update significance of the models - // for (int i = 0; i < n_models; ++i) { - // significanceModels[i] = alpha_t; - // } - // if (finished) { - // return; - // } - // } - // int numItemsPack = 0; // The counter of the models inserted in the current pack - // // Variables to control the accuracy finish condition - // double priorAccuracy = 0.0; - // double improvement = 1.0; - // double convergence_threshold = 1e-4; - // int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold - // // Step 0: Set the finish condition - // // epsilon sub t > 0.5 => inverse the weights policy - // // validation error is not decreasing - // // run out of features - // bool ascending = order_algorithm == Orders.ASC; - // std::mt19937 g{ 173 }; - // while (!finished) { - // // Step 1: Build ranking with mutual information - // auto pairSelection = metrics.SelectKBestWeighted(weights_, ascending, n); // Get all the features sorted - // if (order_algorithm == Orders.RAND) { - // std::shuffle(featureSelection.begin(), featureSelection.end(), g); - // } - // // Remove used features - // featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x) - // { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}), - // end(featureSelection) - // ); - // int k = bisection ? pow(2, tolerance) : 1; - // int counter = 0; // The model counter of the current pack - // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); - // while (counter++ < k && featureSelection.size() > 0) { - // auto feature = featureSelection[0]; - // featureSelection.erase(featureSelection.begin()); - // std::unique_ptr model; - // model = std::make_unique(feature); - // model->fit(dataset, features, className, states, weights_); - // alpha_t = 0.0; - // if (!block_update) { - // auto ypred = model->predict(X_train); - // // Step 3.1: Compute the classifier amout of say - // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); - // } - // // Step 3.4: Store classifier and its accuracy to weigh its future vote - // numItemsPack++; - // featuresUsed.push_back(feature); - // models.push_back(std::move(model)); - // significanceModels.push_back(alpha_t); - // n_models++; - // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); - // } - // if (block_update) { - // std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); - // } - // if (convergence && !finished) { - // auto y_val_predict = predict(X_test); - // double accuracy = (y_val_predict == y_test).sum().item() / (double)y_test.size(0); - // if (priorAccuracy == 0) { - // priorAccuracy = accuracy; - // } else { - // improvement = accuracy - priorAccuracy; - // } - // if (improvement < convergence_threshold) { - // VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); - // tolerance = 0; // Reset the counter if the model performs better - // numItemsPack = 0; - // } - // if (convergence_best) { - // // Keep the best accuracy until now as the prior accuracy - // priorAccuracy = std::max(accuracy, priorAccuracy); - // } else { - // // Keep the last accuray obtained as the prior accuracy - // priorAccuracy = accuracy; - // } - // } - // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); - // finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size(); - // } + // Algorithm based on the adaboost algorithm for classification + // as explained in Ensemble methods (Zhi-Hua Zhou, 2012) + fitted = true; + double alpha_t = 0; + torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64); + bool finished = false; + std::vector featuresUsed; + if (selectFeatures) { + featuresUsed = initializeModels(); + auto ypred = predict(X_train); + std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); + // Update significance of the models + for (int i = 0; i < n_models; ++i) { + significanceModels[i] = alpha_t; + } + if (finished) { + return; + } + } + int numItemsPack = 0; // The counter of the models inserted in the current pack + // Variables to control the accuracy finish condition + double priorAccuracy = 0.0; + double improvement = 1.0; + double convergence_threshold = 1e-4; + int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold + // Step 0: Set the finish condition + // epsilon sub t > 0.5 => inverse the weights policy + // validation error is not decreasing + // run out of features + bool ascending = order_algorithm == Orders.ASC; + std::mt19937 g{ 173 }; + while (!finished) { + // Step 1: Build ranking with mutual information + auto pairSelection = metrics.SelectKPairs(weights_, featuresUsed, ascending, 0); // Get all the pairs sorted + if (order_algorithm == Orders.RAND) { + std::shuffle(pairSelection.begin(), pairSelection.end(), g); + } + // // Remove used features + // featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x) + // { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}), + // end(featureSelection) + // ); + // int k = bisection ? pow(2, tolerance) : 1; + // int counter = 0; // The model counter of the current pack + // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); + // while (counter++ < k && featureSelection.size() > 0) { + // auto feature = featureSelection[0]; + // featureSelection.erase(featureSelection.begin()); + // std::unique_ptr model; + // model = std::make_unique(feature); + // model->fit(dataset, features, className, states, weights_); + // alpha_t = 0.0; + // if (!block_update) { + // auto ypred = model->predict(X_train); + // // Step 3.1: Compute the classifier amout of say + // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); + // } + // // Step 3.4: Store classifier and its accuracy to weigh its future vote + // numItemsPack++; + // featuresUsed.push_back(feature); + // models.push_back(std::move(model)); + // significanceModels.push_back(alpha_t); + // n_models++; + // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); + // } + // if (block_update) { + // std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); + // } + // if (convergence && !finished) { + // auto y_val_predict = predict(X_test); + // double accuracy = (y_val_predict == y_test).sum().item() / (double)y_test.size(0); + // if (priorAccuracy == 0) { + // priorAccuracy = accuracy; + // } else { + // improvement = accuracy - priorAccuracy; + // } + // if (improvement < convergence_threshold) { + // VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); + // tolerance = 0; // Reset the counter if the model performs better + // numItemsPack = 0; + // } + // if (convergence_best) { + // // Keep the best accuracy until now as the prior accuracy + // priorAccuracy = std::max(accuracy, priorAccuracy); + // } else { + // // Keep the last accuray obtained as the prior accuracy + // priorAccuracy = accuracy; + // } + // } + // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); + // finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size(); + } // if (tolerance > maxTolerance) { // if (numItemsPack < n_models) { // notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated"); diff --git a/bayesnet/utils/BayesMetrics.cc b/bayesnet/utils/BayesMetrics.cc index 6083662..85645c7 100644 --- a/bayesnet/utils/BayesMetrics.cc +++ b/bayesnet/utils/BayesMetrics.cc @@ -30,7 +30,7 @@ namespace bayesnet { } samples.index_put_({ -1, "..." }, torch::tensor(labels, torch::kInt32)); } - std::vector> Metrics::SelectKPairs(const torch::Tensor& weights, bool ascending, unsigned k) + std::vector> Metrics::SelectKPairs(const torch::Tensor& weights, std::vector& featuresExcluded, bool ascending, unsigned k) { // Return the K Best features auto n = features.size(); @@ -39,7 +39,13 @@ namespace bayesnet { pairsKBest.clear(); auto labels = samples.index({ -1, "..." }); for (int i = 0; i < n - 1; ++i) { + if (std::find(featuresExcluded.begin(), featuresExcluded.end(), i) != featuresExcluded.end()) { + continue; + } for (int j = i + 1; j < n; ++j) { + if (std::find(featuresExcluded.begin(), featuresExcluded.end(), j) != featuresExcluded.end()) { + continue; + } auto key = std::make_pair(i, j); auto value = conditionalMutualInformation(samples.index({ i, "..." }), samples.index({ j, "..." }), labels, weights); scoresKPairs.push_back({ key, value }); @@ -57,9 +63,10 @@ namespace bayesnet { for (auto& [pairs, score] : scoresKPairs) { pairsKBest.push_back(pairs); } - if (k != 0) { + if (k != 0 && k < pairsKBest.size()) { if (ascending) { - for (int i = 0; i < n - k; ++i) { + int limit = pairsKBest.size() - k; + for (int i = 0; i < limit; i++) { pairsKBest.erase(pairsKBest.begin()); scoresKPairs.erase(scoresKPairs.begin()); } diff --git a/bayesnet/utils/BayesMetrics.h b/bayesnet/utils/BayesMetrics.h index 0e58b82..5b62a72 100644 --- a/bayesnet/utils/BayesMetrics.h +++ b/bayesnet/utils/BayesMetrics.h @@ -16,7 +16,7 @@ namespace bayesnet { Metrics(const torch::Tensor& samples, const std::vector& features, const std::string& className, const int classNumStates); Metrics(const std::vector>& vsamples, const std::vector& labels, const std::vector& features, const std::string& className, const int classNumStates); std::vector SelectKBestWeighted(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); - std::vector> SelectKPairs(const torch::Tensor& weights, bool ascending = false, unsigned k = 0); + std::vector> SelectKPairs(const torch::Tensor& weights, std::vector& featuresExcluded, bool ascending = false, unsigned k = 0); std::vector getScoresKBest() const; std::vector, double>> getScoresKPairs() const; double mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights); diff --git a/tests/TestBayesMetrics.cc b/tests/TestBayesMetrics.cc index b40e3f2..755a4a0 100644 --- a/tests/TestBayesMetrics.cc +++ b/tests/TestBayesMetrics.cc @@ -141,7 +141,8 @@ TEST_CASE("Select K Pairs descending", "[Metrics]") { auto raw = RawDatasets("iris", true); bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); - auto results = metrics.SelectKPairs(raw.weights, false); + std::vector empty; + auto results = metrics.SelectKPairs(raw.weights, empty, false); auto expected = std::vector, double>>{ { { 1, 3 }, 1.31852 }, { { 1, 2 }, 1.17112 }, @@ -168,7 +169,8 @@ TEST_CASE("Select K Pairs ascending", "[Metrics]") { auto raw = RawDatasets("iris", true); bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); - auto results = metrics.SelectKPairs(raw.weights, true); + std::vector empty; + auto results = metrics.SelectKPairs(raw.weights, empty, true); auto expected = std::vector, double>>{ { { 0, 1 }, 0.0 }, { { 2, 3 }, 0.210068 }, @@ -190,4 +192,77 @@ TEST_CASE("Select K Pairs ascending", "[Metrics]") } REQUIRE(results.size() == 6); REQUIRE(scores.size() == 6); +} +TEST_CASE("Select K Pairs with features excluded", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + std::vector excluded = { 0, 3 }; + auto results = metrics.SelectKPairs(raw.weights, excluded, true); + auto expected = std::vector, double>>{ + { { 1, 2 }, 1.17112 }, + }; + auto scores = metrics.getScoresKPairs(); + for (int i = 0; i < results.size(); ++i) { + auto result = results[i]; + auto expect = expected[i]; + auto score = scores[i]; + REQUIRE(result.first == expect.first.first); + REQUIRE(result.second == expect.first.second); + REQUIRE(score.first.first == expect.first.first); + REQUIRE(score.first.second == expect.first.second); + REQUIRE(score.second == Catch::Approx(expect.second).epsilon(raw.epsilon)); + } + REQUIRE(results.size() == 1); + REQUIRE(scores.size() == 1); +} +TEST_CASE("Select K Pairs with number of pairs descending", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + std::vector empty; + auto results = metrics.SelectKPairs(raw.weights, empty, false, 3); + auto expected = std::vector, double>>{ + { { 1, 3 }, 1.31852 }, + { { 1, 2 }, 1.17112 }, + { { 0, 3 }, 0.403749 } + }; + auto scores = metrics.getScoresKPairs(); + REQUIRE(results.size() == 3); + REQUIRE(scores.size() == 3); + for (int i = 0; i < results.size(); ++i) { + auto result = results[i]; + auto expect = expected[i]; + auto score = scores[i]; + REQUIRE(result.first == expect.first.first); + REQUIRE(result.second == expect.first.second); + REQUIRE(score.first.first == expect.first.first); + REQUIRE(score.first.second == expect.first.second); + REQUIRE(score.second == Catch::Approx(expect.second).epsilon(raw.epsilon)); + } +} +TEST_CASE("Select K Pairs with number of pairs ascending", "[Metrics]") +{ + auto raw = RawDatasets("iris", true); + bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); + std::vector empty; + auto results = metrics.SelectKPairs(raw.weights, empty, true, 3); + auto expected = std::vector, double>>{ + { { 0, 3 }, 0.403749 }, + { { 1, 2 }, 1.17112 }, + { { 1, 3 }, 1.31852 } + }; + auto scores = metrics.getScoresKPairs(); + REQUIRE(results.size() == 3); + REQUIRE(scores.size() == 3); + for (int i = 0; i < results.size(); ++i) { + auto result = results[i]; + auto expect = expected[i]; + auto score = scores[i]; + REQUIRE(result.first == expect.first.first); + REQUIRE(result.second == expect.first.second); + REQUIRE(score.first.first == expect.first.first); + REQUIRE(score.first.second == expect.first.second); + REQUIRE(score.second == Catch::Approx(expect.second).epsilon(raw.epsilon)); + } } \ No newline at end of file From 80043d5181355739b80e88097fc1d9f2f8ea8ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 16 May 2024 14:32:59 +0200 Subject: [PATCH 08/21] First approach to BoostA2DE::trainModel --- bayesnet/ensembles/BoostA2DE.cc | 149 +++++++++++++++----------------- 1 file changed, 72 insertions(+), 77 deletions(-) diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index 887c1a2..209173b 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -81,89 +81,84 @@ namespace bayesnet { // run out of features bool ascending = order_algorithm == Orders.ASC; std::mt19937 g{ 173 }; + std::vector> pairSelection; while (!finished) { // Step 1: Build ranking with mutual information - auto pairSelection = metrics.SelectKPairs(weights_, featuresUsed, ascending, 0); // Get all the pairs sorted + pairSelection = metrics.SelectKPairs(weights_, featuresUsed, ascending, 0); // Get all the pairs sorted if (order_algorithm == Orders.RAND) { std::shuffle(pairSelection.begin(), pairSelection.end(), g); } - // // Remove used features - // featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x) - // { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}), - // end(featureSelection) - // ); - // int k = bisection ? pow(2, tolerance) : 1; - // int counter = 0; // The model counter of the current pack - // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); - // while (counter++ < k && featureSelection.size() > 0) { - // auto feature = featureSelection[0]; - // featureSelection.erase(featureSelection.begin()); - // std::unique_ptr model; - // model = std::make_unique(feature); - // model->fit(dataset, features, className, states, weights_); - // alpha_t = 0.0; - // if (!block_update) { - // auto ypred = model->predict(X_train); - // // Step 3.1: Compute the classifier amout of say - // std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); - // } - // // Step 3.4: Store classifier and its accuracy to weigh its future vote - // numItemsPack++; - // featuresUsed.push_back(feature); - // models.push_back(std::move(model)); - // significanceModels.push_back(alpha_t); - // n_models++; - // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); - // } - // if (block_update) { - // std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); - // } - // if (convergence && !finished) { - // auto y_val_predict = predict(X_test); - // double accuracy = (y_val_predict == y_test).sum().item() / (double)y_test.size(0); - // if (priorAccuracy == 0) { - // priorAccuracy = accuracy; - // } else { - // improvement = accuracy - priorAccuracy; - // } - // if (improvement < convergence_threshold) { - // VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); - // tolerance = 0; // Reset the counter if the model performs better - // numItemsPack = 0; - // } - // if (convergence_best) { - // // Keep the best accuracy until now as the prior accuracy - // priorAccuracy = std::max(accuracy, priorAccuracy); - // } else { - // // Keep the last accuray obtained as the prior accuracy - // priorAccuracy = accuracy; - // } - // } - // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); - // finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size(); + int k = bisection ? pow(2, tolerance) : 1; + int counter = 0; // The model counter of the current pack + // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size()); + while (counter++ < k && pairSelection.size() > 0) { + auto feature_pair = pairSelection[0]; + pairSelection.erase(pairSelection.begin()); + std::unique_ptr model; + model = std::make_unique(std::vector({ feature_pair.first, feature_pair.second })); + model->fit(dataset, features, className, states, weights_); + alpha_t = 0.0; + if (!block_update) { + auto ypred = model->predict(X_train); + // Step 3.1: Compute the classifier amout of say + std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_); + } + // Step 3.4: Store classifier and its accuracy to weigh its future vote + numItemsPack++; + models.push_back(std::move(model)); + significanceModels.push_back(alpha_t); + n_models++; + // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size()); + } + if (block_update) { + std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_); + } + if (convergence && !finished) { + auto y_val_predict = predict(X_test); + double accuracy = (y_val_predict == y_test).sum().item() / (double)y_test.size(0); + if (priorAccuracy == 0) { + priorAccuracy = accuracy; + } else { + improvement = accuracy - priorAccuracy; + } + if (improvement < convergence_threshold) { + // VLOG_SCOPE_F(3, " (improvement=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy); + tolerance = 0; // Reset the counter if the model performs better + numItemsPack = 0; + } + if (convergence_best) { + // Keep the best accuracy until now as the prior accuracy + priorAccuracy = std::max(accuracy, priorAccuracy); + } else { + // Keep the last accuray obtained as the prior accuracy + priorAccuracy = accuracy; + } + } + // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size()); + finished = finished || tolerance > maxTolerance || pairSelection.size() == 0; } - // if (tolerance > maxTolerance) { - // if (numItemsPack < n_models) { - // notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated"); - // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models); - // for (int i = 0; i < numItemsPack; ++i) { - // significanceModels.pop_back(); - // models.pop_back(); - // n_models--; - // } - // } else { - // notes.push_back("Convergence threshold reached & 0 models eliminated"); - // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack); - // } - // } - // if (featuresUsed.size() != features.size()) { - // notes.push_back("Used features in train: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size())); - // status = WARNING; - // } - // notes.push_back("Number of models: " + std::to_string(n_models)); + if (tolerance > maxTolerance) { + if (numItemsPack < n_models) { + notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated"); + // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models); + for (int i = 0; i < numItemsPack; ++i) { + significanceModels.pop_back(); + models.pop_back(); + n_models--; + } + } else { + notes.push_back("Convergence threshold reached & 0 models eliminated"); + // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack); + } + } + if (pairSelection.size() > 0) { + notes.push_back("Used pairs not used in train: " + std::to_string(pairSelection.size())); + status = WARNING; + } + notes.push_back("Number of models: " + std::to_string(n_models)); } std::vector BoostA2DE::graph(const std::string& title) const { From 291ba0fb0e329eb12297d1c7dce9f3fc5928fcdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Thu, 16 May 2024 16:33:33 +0200 Subject: [PATCH 09/21] First functional BoostA2DE with its 1st test --- tests/TestBoostA2DE.cc | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/tests/TestBoostA2DE.cc b/tests/TestBoostA2DE.cc index 4b870f7..b0f6b4a 100644 --- a/tests/TestBoostA2DE.cc +++ b/tests/TestBoostA2DE.cc @@ -16,27 +16,16 @@ TEST_CASE("Build basic model", "[BoostA2DE]") { auto raw = RawDatasets("diabetes", true); - bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates); - auto expected = std::map, double>{ - { { 0, 1 }, 0.0 }, - { { 0, 2 }, 0.287696 }, - { { 0, 3 }, 0.403749 }, - { { 1, 2 }, 1.17112 }, - { { 1, 3 }, 1.31852 }, - { { 2, 3 }, 0.210068 }, - }; - for (int i = 0; i < raw.features.size() - 1; ++i) { - for (int j = i + 1; j < raw.features.size(); ++j) { - double result = metrics.conditionalMutualInformation(raw.dataset.index({ i, "..." }), raw.dataset.index({ j, "..." }), raw.yt, raw.weights); - // REQUIRE(result == Catch::Approx(expected.at({ i, j })).epsilon(raw.epsilon)); - auto clf = bayesnet::SPnDE({ i, j }); - clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); - auto score = clf.score(raw.Xt, raw.yt); - std::cout << " i " << i << " j " << j << " cmi " - << std::setw(8) << std::setprecision(6) << fixed << result - << " score = " << score << std::endl; - } - } + auto clf = bayesnet::BoostA2DE(); + clf.fit(raw.Xv, raw.yv, raw.features, raw.className, raw.states); + REQUIRE(clf.getNumberOfNodes() == 342); + REQUIRE(clf.getNumberOfEdges() == 684); + REQUIRE(clf.getNotes().size() == 3); + REQUIRE(clf.getNotes()[0] == "Convergence threshold reached & 15 models eliminated"); + REQUIRE(clf.getNotes()[1] == "Used pairs not used in train: 20"); + REQUIRE(clf.getNotes()[2] == "Number of models: 38"); + auto score = clf.score(raw.Xv, raw.yv); + REQUIRE(score == Catch::Approx(0.919271).epsilon(raw.epsilon)); } // TEST_CASE("Feature_select IWSS", "[BoostAODE]") // { From 2584e8294d3fe86844c63788942e430b75cb0f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Fri, 17 May 2024 11:15:45 +0200 Subject: [PATCH 10/21] Force mutual information methods to be at least 0 There were cases where a tiny negative number was returned (less than -1e-7) Fix mst glass test that is affected with this change --- bayesnet/ensembles/BoostA2DE.cc | 2 +- bayesnet/utils/BayesMetrics.cc | 17 ++++------------- tests/TestBayesMetrics.cc | 5 ++--- tests/TestBoostA2DE.cc | 2 +- 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/bayesnet/ensembles/BoostA2DE.cc b/bayesnet/ensembles/BoostA2DE.cc index 209173b..4738358 100644 --- a/bayesnet/ensembles/BoostA2DE.cc +++ b/bayesnet/ensembles/BoostA2DE.cc @@ -155,7 +155,7 @@ namespace bayesnet { } } if (pairSelection.size() > 0) { - notes.push_back("Used pairs not used in train: " + std::to_string(pairSelection.size())); + notes.push_back("Pairs not used in train: " + std::to_string(pairSelection.size())); status = WARNING; } notes.push_back("Number of models: " + std::to_string(n_models)); diff --git a/bayesnet/utils/BayesMetrics.cc b/bayesnet/utils/BayesMetrics.cc index 85645c7..b4b12cc 100644 --- a/bayesnet/utils/BayesMetrics.cc +++ b/bayesnet/utils/BayesMetrics.cc @@ -198,24 +198,20 @@ namespace bayesnet { } return entropyValue; } - // H(Y|X,C) = sum_{x in X, c in C} p(x,c) H(Y|X=x,C=c) + // H(X|Y,C) = sum_{y in Y, c in C} p(x,c) H(X|Y=y,C=c) double Metrics::conditionalEntropy(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& labels, const torch::Tensor& weights) { // Ensure the tensors are of the same length assert(firstFeature.size(0) == secondFeature.size(0) && firstFeature.size(0) == labels.size(0) && firstFeature.size(0) == weights.size(0)); - // Convert tensors to vectors for easier processing auto firstFeatureData = firstFeature.accessor(); auto secondFeatureData = secondFeature.accessor(); auto labelsData = labels.accessor(); auto weightsData = weights.accessor(); - int numSamples = firstFeature.size(0); - // Maps for joint and marginal probabilities std::map, double> jointCount; std::map, double> marginalCount; - // Compute joint and marginal counts for (int i = 0; i < numSamples; ++i) { auto keyJoint = std::make_tuple(firstFeatureData[i], labelsData[i], secondFeatureData[i]); @@ -224,34 +220,29 @@ namespace bayesnet { jointCount[keyJoint] += weightsData[i]; marginalCount[keyMarginal] += weightsData[i]; } - // Total weight sum double totalWeight = torch::sum(weights).item(); if (totalWeight == 0) return 0; - // Compute the conditional entropy double conditionalEntropy = 0.0; - for (const auto& [keyJoint, jointFreq] : jointCount) { auto [x, c, y] = keyJoint; auto keyMarginal = std::make_tuple(x, c); - //double p_xc = marginalCount[keyMarginal] / totalWeight; double p_y_given_xc = jointFreq / marginalCount[keyMarginal]; - if (p_y_given_xc > 0) { conditionalEntropy -= (jointFreq / totalWeight) * std::log(p_y_given_xc); } } return conditionalEntropy; } - // I(X;Y) = H(Y) - H(Y|X) + // I(X;Y) = H(Y) - H(Y|X) ; I(X;Y) >= 0 double Metrics::mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights) { - return entropy(firstFeature, weights) - conditionalEntropy(firstFeature, secondFeature, weights); + return std::max(entropy(firstFeature, weights) - conditionalEntropy(firstFeature, secondFeature, weights), 0.0); } - // I(X;Y|C) = H(Y|C) - H(Y|X,C) + // I(X;Y|C) = H(X|C) - H(X|Y,C) >= 0 double Metrics::conditionalMutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& labels, const torch::Tensor& weights) { return std::max(conditionalEntropy(firstFeature, labels, weights) - conditionalEntropy(firstFeature, secondFeature, labels, weights), 0.0); diff --git a/tests/TestBayesMetrics.cc b/tests/TestBayesMetrics.cc index 755a4a0..f2eeebf 100644 --- a/tests/TestBayesMetrics.cc +++ b/tests/TestBayesMetrics.cc @@ -11,7 +11,6 @@ #include "TestUtils.h" #include "Timer.h" - TEST_CASE("Metrics Test", "[Metrics]") { std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes"); @@ -28,8 +27,8 @@ TEST_CASE("Metrics Test", "[Metrics]") {"diabetes", 0.0345470614} }; map, std::vector>> resultsMST = { - { {"glass", 0}, { {0, 6}, {0, 5}, {0, 3}, {5, 1}, {5, 8}, {5, 4}, {6, 2}, {6, 7} } }, - { {"glass", 1}, { {1, 5}, {5, 0}, {5, 8}, {5, 4}, {0, 6}, {0, 3}, {6, 2}, {6, 7} } }, + { {"glass", 0}, { {0, 6}, {0, 5}, {0, 3}, {3, 4}, {5, 1}, {5, 8}, {6, 2}, {6, 7} } }, + { {"glass", 1}, { {1, 5}, {5, 0}, {5, 8}, {0, 6}, {0, 3}, {3, 4}, {6, 2}, {6, 7} } }, { {"iris", 0}, { {0, 1}, {0, 2}, {1, 3} } }, { {"iris", 1}, { {1, 0}, {1, 3}, {0, 2} } }, { {"ecoli", 0}, { {0, 1}, {0, 2}, {1, 5}, {1, 3}, {5, 6}, {5, 4} } }, diff --git a/tests/TestBoostA2DE.cc b/tests/TestBoostA2DE.cc index b0f6b4a..b841bc3 100644 --- a/tests/TestBoostA2DE.cc +++ b/tests/TestBoostA2DE.cc @@ -22,7 +22,7 @@ TEST_CASE("Build basic model", "[BoostA2DE]") REQUIRE(clf.getNumberOfEdges() == 684); REQUIRE(clf.getNotes().size() == 3); REQUIRE(clf.getNotes()[0] == "Convergence threshold reached & 15 models eliminated"); - REQUIRE(clf.getNotes()[1] == "Used pairs not used in train: 20"); + REQUIRE(clf.getNotes()[1] == "Pairs not used in train: 20"); REQUIRE(clf.getNotes()[2] == "Number of models: 38"); auto score = clf.score(raw.Xv, raw.yv); REQUIRE(score == Catch::Approx(0.919271).epsilon(raw.epsilon)); From 22b742f0685e13e19706c3217aaec44820747995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Tue, 21 May 2024 10:11:33 +0200 Subject: [PATCH 11/21] Convert ArffFile library to header only library --- CMakeLists.txt | 6 +- bayesnet/classifiers/Proposal.cc | 2 +- lib/Files/ArffFiles.cc | 171 ------------------------------ lib/Files/ArffFiles.h | 33 ------ lib/Files/ArffFiles.hpp | 161 ++++++++++++++++++++++++++++ lib/Files/CMakeLists.txt | 1 - lib/catch2 | 1 + sample/CMakeLists.txt | 3 +- sample/lib/Files/ArffFiles.cc | 174 ------------------------------- sample/lib/Files/ArffFiles.h | 38 ------- sample/lib/Files/ArffFiles.hpp | 161 ++++++++++++++++++++++++++++ sample/lib/Files/CMakeLists.txt | 1 - sample/sample.cc | 2 +- 13 files changed, 330 insertions(+), 424 deletions(-) delete mode 100644 lib/Files/ArffFiles.cc delete mode 100644 lib/Files/ArffFiles.h create mode 100644 lib/Files/ArffFiles.hpp delete mode 100644 lib/Files/CMakeLists.txt create mode 160000 lib/catch2 delete mode 100644 sample/lib/Files/ArffFiles.cc delete mode 100644 sample/lib/Files/ArffFiles.h create mode 100644 sample/lib/Files/ArffFiles.hpp delete mode 100644 sample/lib/Files/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 67cee94..152447e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,11 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -fno-elide-constructors -fno-default-inline") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage -fno-elide-constructors") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") +if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-default-inline") +endif() # Options # ------- @@ -63,7 +66,6 @@ endif (ENABLE_CLANG_TIDY) # include(FetchContent) add_git_submodule("lib/json") add_git_submodule("lib/mdlp") -add_subdirectory("lib/Files") # Subdirectories # -------------- diff --git a/bayesnet/classifiers/Proposal.cc b/bayesnet/classifiers/Proposal.cc index 3ee9cda..d62ed6e 100644 --- a/bayesnet/classifiers/Proposal.cc +++ b/bayesnet/classifiers/Proposal.cc @@ -4,7 +4,7 @@ // SPDX-License-Identifier: MIT // *************************************************************** -#include +#include #include "Proposal.h" namespace bayesnet { diff --git a/lib/Files/ArffFiles.cc b/lib/Files/ArffFiles.cc deleted file mode 100644 index 299b60c..0000000 --- a/lib/Files/ArffFiles.cc +++ /dev/null @@ -1,171 +0,0 @@ -#include "ArffFiles.h" -#include -#include -#include -#include - -std::vector ArffFiles::getLines() const -{ - return lines; -} - -unsigned long int ArffFiles::getSize() const -{ - return lines.size(); -} - -std::vector> ArffFiles::getAttributes() const -{ - return attributes; -} - -std::string ArffFiles::getClassName() const -{ - return className; -} - -std::string ArffFiles::getClassType() const -{ - return classType; -} - -std::vector>& ArffFiles::getX() -{ - return X; -} - -std::vector& ArffFiles::getY() -{ - return y; -} - -void ArffFiles::loadCommon(const std::string& fileName) -{ - std::ifstream file(fileName); - if (!file.is_open()) { - throw std::invalid_argument("Unable to open file"); - } - std::string line; - std::string keyword; - std::string attribute; - std::string type; - std::string type_w; - // Read file - while (getline(file, line)) { - if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { - // Skip comments and empty lines - continue; - } - if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { - // Read attributes - std::stringstream ss(line); - ss >> keyword >> attribute; - type = ""; - while (ss >> type_w) - type += type_w + " "; - attributes.emplace_back(trim(attribute), trim(type)); - continue; - } - if (line[0] == '@') { - continue; - } - // Read data - lines.push_back(line); - } - file.close(); - if (attributes.empty()) - throw std::invalid_argument("No attributes found"); -} - -void ArffFiles::load(const std::string& fileName, bool classLast) -{ - int labelIndex; - loadCommon(fileName); - if (classLast) { - className = std::get<0>(attributes.back()); - classType = std::get<1>(attributes.back()); - attributes.pop_back(); - labelIndex = static_cast(attributes.size()); - } else { - className = std::get<0>(attributes.front()); - classType = std::get<1>(attributes.front()); - attributes.erase(attributes.begin()); - labelIndex = 0; - } - generateDataset(labelIndex); -} -void ArffFiles::load(const std::string& fileName, const std::string& name) -{ - int labelIndex; - loadCommon(fileName); - bool found = false; - for (int i = 0; i < attributes.size(); ++i) { - if (attributes[i].first == name) { - className = std::get<0>(attributes[i]); - classType = std::get<1>(attributes[i]); - attributes.erase(attributes.begin() + i); - labelIndex = i; - found = true; - break; - } - } - if (!found) { - throw std::invalid_argument("Class name not found"); - } - generateDataset(labelIndex); -} - -void ArffFiles::generateDataset(int labelIndex) -{ - X = std::vector>(attributes.size(), std::vector(lines.size())); - auto yy = std::vector(lines.size(), ""); - auto removeLines = std::vector(); // Lines with missing values - size_t numLine = 0; - for (numLine = 0; numLine < lines.size(); numLine++) { - std::stringstream ss(lines[numLine]); - std::string value; - int pos = 0; - int xIndex = 0; - while (getline(ss, value, ',')) { - if (pos++ == labelIndex) { - yy[numLine] = value; - } else { - if (value == "?") { - X[xIndex++][numLine] = -1; - removeLines.push_back(numLine); - } else - X[xIndex++][numLine] = stof(value); - } - } - } - for (auto i : removeLines) { - yy.erase(yy.begin() + i); - for (auto& x : X) { - x.erase(x.begin() + i); - } - } - y = factorize(yy); -} - -std::string ArffFiles::trim(const std::string& source) -{ - std::string s(source); - s.erase(0, s.find_first_not_of(" '\n\r\t")); - s.erase(s.find_last_not_of(" '\n\r\t") + 1); - return s; -} - -std::vector ArffFiles::factorize(const std::vector& labels_t) -{ - std::vector yy; - yy.reserve(labels_t.size()); - std::map labelMap; - int i = 0; - for (const std::string& label : labels_t) { - if (labelMap.find(label) == labelMap.end()) { - labelMap[label] = i++; - } - yy.push_back(labelMap[label]); - } - return yy; -} \ No newline at end of file diff --git a/lib/Files/ArffFiles.h b/lib/Files/ArffFiles.h deleted file mode 100644 index 4602a05..0000000 --- a/lib/Files/ArffFiles.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef ARFFFILES_H -#define ARFFFILES_H - -#include -#include - -class ArffFiles { -public: - ArffFiles() = default; - void load(const std::string&, bool = true); - void load(const std::string&, const std::string&); - std::vector getLines() const; - unsigned long int getSize() const; - std::string getClassName() const; - std::string getClassType() const; - static std::string trim(const std::string&); - std::vector>& getX(); - std::vector& getY(); - std::vector> getAttributes() const; - static std::vector factorize(const std::vector& labels_t); -protected: - std::vector lines; - std::vector> attributes; - std::string className; - std::string classType; - std::vector> X; - std::vector y; - int maxLines = 0; - void generateDataset(int); - void loadCommon(const std::string&); -}; - -#endif \ No newline at end of file diff --git a/lib/Files/ArffFiles.hpp b/lib/Files/ArffFiles.hpp new file mode 100644 index 0000000..7227299 --- /dev/null +++ b/lib/Files/ArffFiles.hpp @@ -0,0 +1,161 @@ +#ifndef ARFFFILES_HPP +#define ARFFFILES_HPP + +#include +#include +#include +#include +#include +#include // std::isdigit +#include // std::all_of +#include + +class ArffFiles { +public: + ArffFiles() = default; + void load(const std::string& fileName, bool classLast = true) + { + int labelIndex; + loadCommon(fileName); + if (classLast) { + className = std::get<0>(attributes.back()); + classType = std::get<1>(attributes.back()); + attributes.pop_back(); + labelIndex = static_cast(attributes.size()); + } else { + className = std::get<0>(attributes.front()); + classType = std::get<1>(attributes.front()); + attributes.erase(attributes.begin()); + labelIndex = 0; + } + generateDataset(labelIndex); + }; + void load(const std::string& fileName, const std::string& name) + { + int labelIndex; + loadCommon(fileName); + bool found = false; + for (int i = 0; i < attributes.size(); ++i) { + if (attributes[i].first == name) { + className = std::get<0>(attributes[i]); + classType = std::get<1>(attributes[i]); + attributes.erase(attributes.begin() + i); + labelIndex = i; + found = true; + break; + } + } + if (!found) { + throw std::invalid_argument("Class name not found"); + } + generateDataset(labelIndex); + }; + std::vector getLines() const { return lines; }; + unsigned long int getSize() const { return lines.size(); }; + std::string getClassName() const { return className; }; + std::string getClassType() const { return classType; }; + std::vector getLabels() const { return labels; } + static std::string trim(const std::string& source) + { + std::string s(source); + s.erase(0, s.find_first_not_of(" '\n\r\t")); + s.erase(s.find_last_not_of(" '\n\r\t") + 1); + return s; + }; + std::vector>& getX() { return X; }; + std::vector& getY() { return y; } + std::vector> getAttributes() const { return attributes; }; + std::vector factorize(const std::vector& labels_t) + { + std::vector yy; + labels.clear(); + yy.reserve(labels_t.size()); + std::map labelMap; + int i = 0; + for (const std::string& label : labels_t) { + if (labelMap.find(label) == labelMap.end()) { + labelMap[label] = i++; + bool allDigits = std::all_of(label.begin(), label.end(), isdigit); + if (allDigits) + labels.push_back("Class " + label); + else + labels.push_back(label); + } + yy.push_back(labelMap[label]); + } + return yy; + }; +private: + void generateDataset(int labelIndex) + { + X = std::vector>(attributes.size(), std::vector(lines.size())); + auto yy = std::vector(lines.size(), ""); + auto removeLines = std::vector(); // Lines with missing values + for (size_t i = 0; i < lines.size(); i++) { + std::stringstream ss(lines[i]); + std::string value; + int pos = 0; + int xIndex = 0; + while (getline(ss, value, ',')) { + if (pos++ == labelIndex) { + yy[i] = value; + } else { + if (value == "?") { + X[xIndex++][i] = -1; + removeLines.push_back(i); + } else + X[xIndex++][i] = stof(value); + } + } + } + for (auto i : removeLines) { + yy.erase(yy.begin() + i); + for (auto& x : X) { + x.erase(x.begin() + i); + } + } + y = factorize(yy); + }; + void loadCommon(std::string fileName) + { + std::ifstream file(fileName); + if (!file.is_open()) { + throw std::invalid_argument("Unable to open file"); + } + std::string line; + std::string keyword; + std::string attribute; + std::string type; + std::string type_w; + while (getline(file, line)) { + if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { + continue; + } + if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { + std::stringstream ss(line); + ss >> keyword >> attribute; + type = ""; + while (ss >> type_w) + type += type_w + " "; + attributes.emplace_back(trim(attribute), trim(type)); + continue; + } + if (line[0] == '@') { + continue; + } + lines.push_back(line); + } + file.close(); + if (attributes.empty()) + throw std::invalid_argument("No attributes found"); + }; + std::vector lines; + std::vector> attributes; + std::string className; + std::string classType; + std::vector> X; + std::vector y; + std::vector labels; +}; + +#endif \ No newline at end of file diff --git a/lib/Files/CMakeLists.txt b/lib/Files/CMakeLists.txt deleted file mode 100644 index fce5b8f..0000000 --- a/lib/Files/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_library(ArffFiles ArffFiles.cc) \ No newline at end of file diff --git a/lib/catch2 b/lib/catch2 new file mode 160000 index 0000000..029fe3b --- /dev/null +++ b/lib/catch2 @@ -0,0 +1 @@ +Subproject commit 029fe3b4609dd84cd939b73357f37bbb75bcf82f diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt index c95e219..d50030e 100644 --- a/sample/CMakeLists.txt +++ b/sample/CMakeLists.txt @@ -14,7 +14,6 @@ include_directories( /usr/local/include ) -add_subdirectory(lib/Files) add_subdirectory(lib/mdlp) add_executable(bayesnet_sample sample.cc) -target_link_libraries(bayesnet_sample ArffFiles mdlp "${TORCH_LIBRARIES}" "${BayesNet}") \ No newline at end of file +target_link_libraries(bayesnet_sample mdlp "${TORCH_LIBRARIES}" "${BayesNet}") \ No newline at end of file diff --git a/sample/lib/Files/ArffFiles.cc b/sample/lib/Files/ArffFiles.cc deleted file mode 100644 index d333d1e..0000000 --- a/sample/lib/Files/ArffFiles.cc +++ /dev/null @@ -1,174 +0,0 @@ -// *************************************************************** -// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez -// SPDX-FileType: SOURCE -// SPDX-License-Identifier: MIT -// *************************************************************** - -#include "ArffFiles.h" -#include -#include -#include -#include - -ArffFiles::ArffFiles() = default; - -std::vector ArffFiles::getLines() const -{ - return lines; -} - -unsigned long int ArffFiles::getSize() const -{ - return lines.size(); -} - -std::vector> ArffFiles::getAttributes() const -{ - return attributes; -} - -std::string ArffFiles::getClassName() const -{ - return className; -} - -std::string ArffFiles::getClassType() const -{ - return classType; -} - -std::vector>& ArffFiles::getX() -{ - return X; -} - -std::vector& ArffFiles::getY() -{ - return y; -} - -void ArffFiles::loadCommon(std::string fileName) -{ - std::ifstream file(fileName); - if (!file.is_open()) { - throw std::invalid_argument("Unable to open file"); - } - std::string line; - std::string keyword; - std::string attribute; - std::string type; - std::string type_w; - while (getline(file, line)) { - if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { - continue; - } - if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { - std::stringstream ss(line); - ss >> keyword >> attribute; - type = ""; - while (ss >> type_w) - type += type_w + " "; - attributes.emplace_back(trim(attribute), trim(type)); - continue; - } - if (line[0] == '@') { - continue; - } - lines.push_back(line); - } - file.close(); - if (attributes.empty()) - throw std::invalid_argument("No attributes found"); -} - -void ArffFiles::load(const std::string& fileName, bool classLast) -{ - int labelIndex; - loadCommon(fileName); - if (classLast) { - className = std::get<0>(attributes.back()); - classType = std::get<1>(attributes.back()); - attributes.pop_back(); - labelIndex = static_cast(attributes.size()); - } else { - className = std::get<0>(attributes.front()); - classType = std::get<1>(attributes.front()); - attributes.erase(attributes.begin()); - labelIndex = 0; - } - generateDataset(labelIndex); -} -void ArffFiles::load(const std::string& fileName, const std::string& name) -{ - int labelIndex; - loadCommon(fileName); - bool found = false; - for (int i = 0; i < attributes.size(); ++i) { - if (attributes[i].first == name) { - className = std::get<0>(attributes[i]); - classType = std::get<1>(attributes[i]); - attributes.erase(attributes.begin() + i); - labelIndex = i; - found = true; - break; - } - } - if (!found) { - throw std::invalid_argument("Class name not found"); - } - generateDataset(labelIndex); -} - -void ArffFiles::generateDataset(int labelIndex) -{ - X = std::vector>(attributes.size(), std::vector(lines.size())); - auto yy = std::vector(lines.size(), ""); - auto removeLines = std::vector(); // Lines with missing values - for (size_t i = 0; i < lines.size(); i++) { - std::stringstream ss(lines[i]); - std::string value; - int pos = 0; - int xIndex = 0; - while (getline(ss, value, ',')) { - if (pos++ == labelIndex) { - yy[i] = value; - } else { - if (value == "?") { - X[xIndex++][i] = -1; - removeLines.push_back(i); - } else - X[xIndex++][i] = stof(value); - } - } - } - for (auto i : removeLines) { - yy.erase(yy.begin() + i); - for (auto& x : X) { - x.erase(x.begin() + i); - } - } - y = factorize(yy); -} - -std::string ArffFiles::trim(const std::string& source) -{ - std::string s(source); - s.erase(0, s.find_first_not_of(" '\n\r\t")); - s.erase(s.find_last_not_of(" '\n\r\t") + 1); - return s; -} - -std::vector ArffFiles::factorize(const std::vector& labels_t) -{ - std::vector yy; - yy.reserve(labels_t.size()); - std::map labelMap; - int i = 0; - for (const std::string& label : labels_t) { - if (labelMap.find(label) == labelMap.end()) { - labelMap[label] = i++; - } - yy.push_back(labelMap[label]); - } - return yy; -} \ No newline at end of file diff --git a/sample/lib/Files/ArffFiles.h b/sample/lib/Files/ArffFiles.h deleted file mode 100644 index 12206c5..0000000 --- a/sample/lib/Files/ArffFiles.h +++ /dev/null @@ -1,38 +0,0 @@ -// *************************************************************** -// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez -// SPDX-FileType: SOURCE -// SPDX-License-Identifier: MIT -// *************************************************************** - -#ifndef ARFFFILES_H -#define ARFFFILES_H - -#include -#include - -class ArffFiles { -private: - std::vector lines; - std::vector> attributes; - std::string className; - std::string classType; - std::vector> X; - std::vector y; - void generateDataset(int); - void loadCommon(std::string); -public: - ArffFiles(); - void load(const std::string&, bool = true); - void load(const std::string&, const std::string&); - std::vector getLines() const; - unsigned long int getSize() const; - std::string getClassName() const; - std::string getClassType() const; - static std::string trim(const std::string&); - std::vector>& getX(); - std::vector& getY(); - std::vector> getAttributes() const; - static std::vector factorize(const std::vector& labels_t); -}; - -#endif \ No newline at end of file diff --git a/sample/lib/Files/ArffFiles.hpp b/sample/lib/Files/ArffFiles.hpp new file mode 100644 index 0000000..7227299 --- /dev/null +++ b/sample/lib/Files/ArffFiles.hpp @@ -0,0 +1,161 @@ +#ifndef ARFFFILES_HPP +#define ARFFFILES_HPP + +#include +#include +#include +#include +#include +#include // std::isdigit +#include // std::all_of +#include + +class ArffFiles { +public: + ArffFiles() = default; + void load(const std::string& fileName, bool classLast = true) + { + int labelIndex; + loadCommon(fileName); + if (classLast) { + className = std::get<0>(attributes.back()); + classType = std::get<1>(attributes.back()); + attributes.pop_back(); + labelIndex = static_cast(attributes.size()); + } else { + className = std::get<0>(attributes.front()); + classType = std::get<1>(attributes.front()); + attributes.erase(attributes.begin()); + labelIndex = 0; + } + generateDataset(labelIndex); + }; + void load(const std::string& fileName, const std::string& name) + { + int labelIndex; + loadCommon(fileName); + bool found = false; + for (int i = 0; i < attributes.size(); ++i) { + if (attributes[i].first == name) { + className = std::get<0>(attributes[i]); + classType = std::get<1>(attributes[i]); + attributes.erase(attributes.begin() + i); + labelIndex = i; + found = true; + break; + } + } + if (!found) { + throw std::invalid_argument("Class name not found"); + } + generateDataset(labelIndex); + }; + std::vector getLines() const { return lines; }; + unsigned long int getSize() const { return lines.size(); }; + std::string getClassName() const { return className; }; + std::string getClassType() const { return classType; }; + std::vector getLabels() const { return labels; } + static std::string trim(const std::string& source) + { + std::string s(source); + s.erase(0, s.find_first_not_of(" '\n\r\t")); + s.erase(s.find_last_not_of(" '\n\r\t") + 1); + return s; + }; + std::vector>& getX() { return X; }; + std::vector& getY() { return y; } + std::vector> getAttributes() const { return attributes; }; + std::vector factorize(const std::vector& labels_t) + { + std::vector yy; + labels.clear(); + yy.reserve(labels_t.size()); + std::map labelMap; + int i = 0; + for (const std::string& label : labels_t) { + if (labelMap.find(label) == labelMap.end()) { + labelMap[label] = i++; + bool allDigits = std::all_of(label.begin(), label.end(), isdigit); + if (allDigits) + labels.push_back("Class " + label); + else + labels.push_back(label); + } + yy.push_back(labelMap[label]); + } + return yy; + }; +private: + void generateDataset(int labelIndex) + { + X = std::vector>(attributes.size(), std::vector(lines.size())); + auto yy = std::vector(lines.size(), ""); + auto removeLines = std::vector(); // Lines with missing values + for (size_t i = 0; i < lines.size(); i++) { + std::stringstream ss(lines[i]); + std::string value; + int pos = 0; + int xIndex = 0; + while (getline(ss, value, ',')) { + if (pos++ == labelIndex) { + yy[i] = value; + } else { + if (value == "?") { + X[xIndex++][i] = -1; + removeLines.push_back(i); + } else + X[xIndex++][i] = stof(value); + } + } + } + for (auto i : removeLines) { + yy.erase(yy.begin() + i); + for (auto& x : X) { + x.erase(x.begin() + i); + } + } + y = factorize(yy); + }; + void loadCommon(std::string fileName) + { + std::ifstream file(fileName); + if (!file.is_open()) { + throw std::invalid_argument("Unable to open file"); + } + std::string line; + std::string keyword; + std::string attribute; + std::string type; + std::string type_w; + while (getline(file, line)) { + if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { + continue; + } + if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { + std::stringstream ss(line); + ss >> keyword >> attribute; + type = ""; + while (ss >> type_w) + type += type_w + " "; + attributes.emplace_back(trim(attribute), trim(type)); + continue; + } + if (line[0] == '@') { + continue; + } + lines.push_back(line); + } + file.close(); + if (attributes.empty()) + throw std::invalid_argument("No attributes found"); + }; + std::vector lines; + std::vector> attributes; + std::string className; + std::string classType; + std::vector> X; + std::vector y; + std::vector labels; +}; + +#endif \ No newline at end of file diff --git a/sample/lib/Files/CMakeLists.txt b/sample/lib/Files/CMakeLists.txt deleted file mode 100644 index fce5b8f..0000000 --- a/sample/lib/Files/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_library(ArffFiles ArffFiles.cc) \ No newline at end of file diff --git a/sample/sample.cc b/sample/sample.cc index e58dab7..511230f 100644 --- a/sample/sample.cc +++ b/sample/sample.cc @@ -4,7 +4,7 @@ // SPDX-License-Identifier: MIT // *************************************************************** -#include +#include #include #include From 0341bd5648fc769cbd20c3b019768accf82832a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Tue, 21 May 2024 11:50:19 +0000 Subject: [PATCH 12/21] Refactor ArffFiles library as a git submodule only for tests --- .gitmodules | 3 + bayesnet/CMakeLists.txt | 1 - bayesnet/classifiers/Proposal.cc | 19 +++- bayesnet/classifiers/Proposal.h | 1 + lib/Files/ArffFiles.hpp | 161 ------------------------------- sample/lib/Files/ArffFiles.hpp | 161 ------------------------------- tests/CMakeLists.txt | 4 +- tests/TestModulesVersions.cc | 8 +- tests/TestUtils.h | 2 +- tests/lib/Files | 1 + 10 files changed, 31 insertions(+), 330 deletions(-) delete mode 100644 lib/Files/ArffFiles.hpp delete mode 100644 sample/lib/Files/ArffFiles.hpp create mode 160000 tests/lib/Files diff --git a/.gitmodules b/.gitmodules index 90a50b3..e0ca40e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,3 +18,6 @@ url = https://github.com/catchorg/Catch2.git main = main update = merge +[submodule "tests/lib/Files"] + path = tests/lib/Files + url = https://github.com/rmontanana/ArffFiles diff --git a/bayesnet/CMakeLists.txt b/bayesnet/CMakeLists.txt index c1aebe9..2aef26a 100644 --- a/bayesnet/CMakeLists.txt +++ b/bayesnet/CMakeLists.txt @@ -1,6 +1,5 @@ include_directories( ${BayesNet_SOURCE_DIR}/lib/mdlp - ${BayesNet_SOURCE_DIR}/lib/Files ${BayesNet_SOURCE_DIR}/lib/folding ${BayesNet_SOURCE_DIR}/lib/json/include ${BayesNet_SOURCE_DIR} diff --git a/bayesnet/classifiers/Proposal.cc b/bayesnet/classifiers/Proposal.cc index d62ed6e..2dfadb7 100644 --- a/bayesnet/classifiers/Proposal.cc +++ b/bayesnet/classifiers/Proposal.cc @@ -4,7 +4,6 @@ // SPDX-License-Identifier: MIT // *************************************************************** -#include #include "Proposal.h" namespace bayesnet { @@ -54,8 +53,7 @@ namespace bayesnet { yJoinParents[i] += to_string(pDataset.index({ idx, i }).item()); } } - auto arff = ArffFiles(); - auto yxv = arff.factorize(yJoinParents); + auto yxv = factorize(yJoinParents); auto xvf_ptr = Xf.index({ index }).data_ptr(); auto xvf = std::vector(xvf_ptr, xvf_ptr + Xf.size(1)); discretizers[feature]->fit(xvf, yxv); @@ -113,4 +111,19 @@ namespace bayesnet { } return Xtd; } + std::vector Proposal::factorize(const std::vector& labels_t) + { + std::vector yy; + yy.reserve(labels_t.size()); + std::map labelMap; + int i = 0; + for (const std::string& label : labels_t) { + if (labelMap.find(label) == labelMap.end()) { + labelMap[label] = i++; + bool allDigits = std::all_of(label.begin(), label.end(), ::isdigit); + } + yy.push_back(labelMap[label]); + } + return yy; + } } \ No newline at end of file diff --git a/bayesnet/classifiers/Proposal.h b/bayesnet/classifiers/Proposal.h index 6e7c351..dd011d8 100644 --- a/bayesnet/classifiers/Proposal.h +++ b/bayesnet/classifiers/Proposal.h @@ -27,6 +27,7 @@ namespace bayesnet { torch::Tensor y; // y discrete nx1 tensor map discretizers; private: + std::vector factorize(const std::vector& labels_t); torch::Tensor& pDataset; // (n+1)xm tensor std::vector& pFeatures; std::string& pClassName; diff --git a/lib/Files/ArffFiles.hpp b/lib/Files/ArffFiles.hpp deleted file mode 100644 index 7227299..0000000 --- a/lib/Files/ArffFiles.hpp +++ /dev/null @@ -1,161 +0,0 @@ -#ifndef ARFFFILES_HPP -#define ARFFFILES_HPP - -#include -#include -#include -#include -#include -#include // std::isdigit -#include // std::all_of -#include - -class ArffFiles { -public: - ArffFiles() = default; - void load(const std::string& fileName, bool classLast = true) - { - int labelIndex; - loadCommon(fileName); - if (classLast) { - className = std::get<0>(attributes.back()); - classType = std::get<1>(attributes.back()); - attributes.pop_back(); - labelIndex = static_cast(attributes.size()); - } else { - className = std::get<0>(attributes.front()); - classType = std::get<1>(attributes.front()); - attributes.erase(attributes.begin()); - labelIndex = 0; - } - generateDataset(labelIndex); - }; - void load(const std::string& fileName, const std::string& name) - { - int labelIndex; - loadCommon(fileName); - bool found = false; - for (int i = 0; i < attributes.size(); ++i) { - if (attributes[i].first == name) { - className = std::get<0>(attributes[i]); - classType = std::get<1>(attributes[i]); - attributes.erase(attributes.begin() + i); - labelIndex = i; - found = true; - break; - } - } - if (!found) { - throw std::invalid_argument("Class name not found"); - } - generateDataset(labelIndex); - }; - std::vector getLines() const { return lines; }; - unsigned long int getSize() const { return lines.size(); }; - std::string getClassName() const { return className; }; - std::string getClassType() const { return classType; }; - std::vector getLabels() const { return labels; } - static std::string trim(const std::string& source) - { - std::string s(source); - s.erase(0, s.find_first_not_of(" '\n\r\t")); - s.erase(s.find_last_not_of(" '\n\r\t") + 1); - return s; - }; - std::vector>& getX() { return X; }; - std::vector& getY() { return y; } - std::vector> getAttributes() const { return attributes; }; - std::vector factorize(const std::vector& labels_t) - { - std::vector yy; - labels.clear(); - yy.reserve(labels_t.size()); - std::map labelMap; - int i = 0; - for (const std::string& label : labels_t) { - if (labelMap.find(label) == labelMap.end()) { - labelMap[label] = i++; - bool allDigits = std::all_of(label.begin(), label.end(), isdigit); - if (allDigits) - labels.push_back("Class " + label); - else - labels.push_back(label); - } - yy.push_back(labelMap[label]); - } - return yy; - }; -private: - void generateDataset(int labelIndex) - { - X = std::vector>(attributes.size(), std::vector(lines.size())); - auto yy = std::vector(lines.size(), ""); - auto removeLines = std::vector(); // Lines with missing values - for (size_t i = 0; i < lines.size(); i++) { - std::stringstream ss(lines[i]); - std::string value; - int pos = 0; - int xIndex = 0; - while (getline(ss, value, ',')) { - if (pos++ == labelIndex) { - yy[i] = value; - } else { - if (value == "?") { - X[xIndex++][i] = -1; - removeLines.push_back(i); - } else - X[xIndex++][i] = stof(value); - } - } - } - for (auto i : removeLines) { - yy.erase(yy.begin() + i); - for (auto& x : X) { - x.erase(x.begin() + i); - } - } - y = factorize(yy); - }; - void loadCommon(std::string fileName) - { - std::ifstream file(fileName); - if (!file.is_open()) { - throw std::invalid_argument("Unable to open file"); - } - std::string line; - std::string keyword; - std::string attribute; - std::string type; - std::string type_w; - while (getline(file, line)) { - if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { - continue; - } - if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { - std::stringstream ss(line); - ss >> keyword >> attribute; - type = ""; - while (ss >> type_w) - type += type_w + " "; - attributes.emplace_back(trim(attribute), trim(type)); - continue; - } - if (line[0] == '@') { - continue; - } - lines.push_back(line); - } - file.close(); - if (attributes.empty()) - throw std::invalid_argument("No attributes found"); - }; - std::vector lines; - std::vector> attributes; - std::string className; - std::string classType; - std::vector> X; - std::vector y; - std::vector labels; -}; - -#endif \ No newline at end of file diff --git a/sample/lib/Files/ArffFiles.hpp b/sample/lib/Files/ArffFiles.hpp deleted file mode 100644 index 7227299..0000000 --- a/sample/lib/Files/ArffFiles.hpp +++ /dev/null @@ -1,161 +0,0 @@ -#ifndef ARFFFILES_HPP -#define ARFFFILES_HPP - -#include -#include -#include -#include -#include -#include // std::isdigit -#include // std::all_of -#include - -class ArffFiles { -public: - ArffFiles() = default; - void load(const std::string& fileName, bool classLast = true) - { - int labelIndex; - loadCommon(fileName); - if (classLast) { - className = std::get<0>(attributes.back()); - classType = std::get<1>(attributes.back()); - attributes.pop_back(); - labelIndex = static_cast(attributes.size()); - } else { - className = std::get<0>(attributes.front()); - classType = std::get<1>(attributes.front()); - attributes.erase(attributes.begin()); - labelIndex = 0; - } - generateDataset(labelIndex); - }; - void load(const std::string& fileName, const std::string& name) - { - int labelIndex; - loadCommon(fileName); - bool found = false; - for (int i = 0; i < attributes.size(); ++i) { - if (attributes[i].first == name) { - className = std::get<0>(attributes[i]); - classType = std::get<1>(attributes[i]); - attributes.erase(attributes.begin() + i); - labelIndex = i; - found = true; - break; - } - } - if (!found) { - throw std::invalid_argument("Class name not found"); - } - generateDataset(labelIndex); - }; - std::vector getLines() const { return lines; }; - unsigned long int getSize() const { return lines.size(); }; - std::string getClassName() const { return className; }; - std::string getClassType() const { return classType; }; - std::vector getLabels() const { return labels; } - static std::string trim(const std::string& source) - { - std::string s(source); - s.erase(0, s.find_first_not_of(" '\n\r\t")); - s.erase(s.find_last_not_of(" '\n\r\t") + 1); - return s; - }; - std::vector>& getX() { return X; }; - std::vector& getY() { return y; } - std::vector> getAttributes() const { return attributes; }; - std::vector factorize(const std::vector& labels_t) - { - std::vector yy; - labels.clear(); - yy.reserve(labels_t.size()); - std::map labelMap; - int i = 0; - for (const std::string& label : labels_t) { - if (labelMap.find(label) == labelMap.end()) { - labelMap[label] = i++; - bool allDigits = std::all_of(label.begin(), label.end(), isdigit); - if (allDigits) - labels.push_back("Class " + label); - else - labels.push_back(label); - } - yy.push_back(labelMap[label]); - } - return yy; - }; -private: - void generateDataset(int labelIndex) - { - X = std::vector>(attributes.size(), std::vector(lines.size())); - auto yy = std::vector(lines.size(), ""); - auto removeLines = std::vector(); // Lines with missing values - for (size_t i = 0; i < lines.size(); i++) { - std::stringstream ss(lines[i]); - std::string value; - int pos = 0; - int xIndex = 0; - while (getline(ss, value, ',')) { - if (pos++ == labelIndex) { - yy[i] = value; - } else { - if (value == "?") { - X[xIndex++][i] = -1; - removeLines.push_back(i); - } else - X[xIndex++][i] = stof(value); - } - } - } - for (auto i : removeLines) { - yy.erase(yy.begin() + i); - for (auto& x : X) { - x.erase(x.begin() + i); - } - } - y = factorize(yy); - }; - void loadCommon(std::string fileName) - { - std::ifstream file(fileName); - if (!file.is_open()) { - throw std::invalid_argument("Unable to open file"); - } - std::string line; - std::string keyword; - std::string attribute; - std::string type; - std::string type_w; - while (getline(file, line)) { - if (line.empty() || line[0] == '%' || line == "\r" || line == " ") { - continue; - } - if (line.find("@attribute") != std::string::npos || line.find("@ATTRIBUTE") != std::string::npos) { - std::stringstream ss(line); - ss >> keyword >> attribute; - type = ""; - while (ss >> type_w) - type += type_w + " "; - attributes.emplace_back(trim(attribute), trim(type)); - continue; - } - if (line[0] == '@') { - continue; - } - lines.push_back(line); - } - file.close(); - if (attributes.empty()) - throw std::invalid_argument("No attributes found"); - }; - std::vector lines; - std::vector> attributes; - std::string className; - std::string classType; - std::vector> X; - std::vector y; - std::vector labels; -}; - -#endif \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 99249fc..1ff33ee 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,6 @@ if(ENABLE_TESTING) include_directories( - ${BayesNet_SOURCE_DIR}/lib/Files + ${BayesNet_SOURCE_DIR}/tests/lib/Files ${BayesNet_SOURCE_DIR}/lib/folding ${BayesNet_SOURCE_DIR}/lib/mdlp ${BayesNet_SOURCE_DIR}/lib/json/include @@ -11,7 +11,7 @@ if(ENABLE_TESTING) add_executable(TestBayesNet TestBayesNetwork.cc TestBayesNode.cc TestBayesClassifier.cc TestBayesModels.cc TestBayesMetrics.cc TestFeatureSelection.cc TestBoostAODE.cc TestA2DE.cc TestUtils.cc TestBayesEnsemble.cc TestModulesVersions.cc TestBoostA2DE.cc ${BayesNet_SOURCES}) - target_link_libraries(TestBayesNet PUBLIC "${TORCH_LIBRARIES}" ArffFiles mdlp PRIVATE Catch2::Catch2WithMain) + target_link_libraries(TestBayesNet PUBLIC "${TORCH_LIBRARIES}" mdlp PRIVATE Catch2::Catch2WithMain) add_test(NAME BayesNetworkTest COMMAND TestBayesNet) add_test(NAME A2DE COMMAND TestBayesNet "[A2DE]") add_test(NAME BoostA2DE COMMAND TestBayesNet "[BoostA2DE]") diff --git a/tests/TestModulesVersions.cc b/tests/TestModulesVersions.cc index c9a44e0..a8b2ce2 100644 --- a/tests/TestModulesVersions.cc +++ b/tests/TestModulesVersions.cc @@ -18,7 +18,8 @@ std::map modules = { { "mdlp", "1.1.2" }, { "Folding", "1.1.0" }, - { "json", "3.11" } + { "json", "3.11" }, + { "ArffFiles", "1.0.0" } }; TEST_CASE("MDLP", "[Modules]") @@ -35,3 +36,8 @@ TEST_CASE("NLOHMANN_JSON", "[Modules]") { REQUIRE(JSON_VERSION == modules["json"]); } +TEST_CASE("ArffFiles", "[Modules]") +{ + auto handler = ArffFiles(); + REQUIRE(handler.version() == modules["ArffFiles"]); +} diff --git a/tests/TestUtils.h b/tests/TestUtils.h index 09ea305..96b6775 100644 --- a/tests/TestUtils.h +++ b/tests/TestUtils.h @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include diff --git a/tests/lib/Files b/tests/lib/Files new file mode 160000 index 0000000..40ac380 --- /dev/null +++ b/tests/lib/Files @@ -0,0 +1 @@ +Subproject commit 40ac38011a2445e00df8a18048c67abaff16fa59 From a2853dd2e50ac4f99b9574fca97c76546f84eb81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Tue, 21 May 2024 23:38:10 +0200 Subject: [PATCH 13/21] Add Doxygen to generate man and manual pages --- docs/Doxyfile | 2911 +++++++++++++++++ docs/logo_small.png | Bin 0 -> 10855 bytes docs/man3/bayesnet_A2DE.3 | 257 ++ docs/man3/bayesnet_AODE.3 | 257 ++ docs/man3/bayesnet_AODELd.3 | 296 ++ docs/man3/bayesnet_BaseClassifier.3 | 116 + docs/man3/bayesnet_Boost.3 | 369 +++ docs/man3/bayesnet_BoostA2DE.3 | 316 ++ docs/man3/bayesnet_BoostAODE.3 | 316 ++ docs/man3/bayesnet_Classifier.3 | 360 ++ docs/man3/bayesnet_Ensemble.3 | 348 ++ docs/man3/bayesnet_KDB.3 | 201 ++ docs/man3/bayesnet_KDBLd.3 | 254 ++ docs/man3/bayesnet_Network.3 | 223 ++ docs/man3/bayesnet_Node.3 | 135 + docs/man3/bayesnet_Proposal.3 | 95 + docs/man3/bayesnet_SPODE.3 | 195 ++ docs/man3/bayesnet_SPODELd.3 | 268 ++ docs/man3/bayesnet_SPnDE.3 | 193 ++ docs/man3/bayesnet_TAN.3 | 192 ++ docs/man3/bayesnet_TANLd.3 | 244 ++ docs/manual/_a2_d_e_8cc_source.html | 154 + docs/manual/_a2_d_e_8h_source.html | 140 + docs/manual/_a_o_d_e_8cc_source.html | 152 + docs/manual/_a_o_d_e_8h_source.html | 140 + docs/manual/_a_o_d_e_ld_8cc_source.html | 161 + docs/manual/_a_o_d_e_ld_8h_source.html | 144 + docs/manual/_base_classifier_8h_source.html | 162 + docs/manual/_boost_8cc_source.html | 360 ++ docs/manual/_boost_8h_source.html | 170 + docs/manual/_boost_a2_d_e_8cc_source.html | 281 ++ docs/manual/_boost_a2_d_e_8h_source.html | 143 + docs/manual/_boost_a_o_d_e_8cc_source.html | 275 ++ docs/manual/_boost_a_o_d_e_8h_source.html | 144 + docs/manual/_classifier_8cc_source.html | 308 ++ docs/manual/_classifier_8h_source.html | 184 ++ docs/manual/_ensemble_8cc_source.html | 336 ++ docs/manual/_ensemble_8h_source.html | 171 + docs/manual/_k_d_b_8cc_source.html | 225 ++ docs/manual/_k_d_b_8h_source.html | 145 + docs/manual/_k_d_b_ld_8cc_source.html | 149 + docs/manual/_k_d_b_ld_8h_source.html | 143 + docs/manual/_network_8cc_source.html | 543 +++ docs/manual/_network_8h_source.html | 186 ++ docs/manual/_node_8cc_source.html | 254 ++ docs/manual/_node_8h_source.html | 159 + docs/manual/_proposal_8cc_source.html | 243 ++ docs/manual/_proposal_8h_source.html | 155 + docs/manual/_s_p_o_d_e_8cc_source.html | 145 + docs/manual/_s_p_o_d_e_8h_source.html | 141 + docs/manual/_s_p_o_d_e_ld_8cc_source.html | 164 + docs/manual/_s_p_o_d_e_ld_8h_source.html | 144 + docs/manual/_s_pn_d_e_8cc_source.html | 152 + docs/manual/_s_pn_d_e_8h_source.html | 144 + docs/manual/_t_a_n_8cc_source.html | 159 + docs/manual/_t_a_n_8h_source.html | 139 + docs/manual/_t_a_n_ld_8cc_source.html | 150 + docs/manual/_t_a_n_ld_8h_source.html | 143 + docs/manual/annotated.html | 137 + docs/manual/annotated_dup.js | 24 + docs/manual/bc_s.png | Bin 0 -> 676 bytes docs/manual/bc_sd.png | Bin 0 -> 635 bytes .../classbayesnet_1_1_a2_d_e-members.html | 174 + docs/manual/classbayesnet_1_1_a2_d_e.html | 420 +++ .../classbayesnet_1_1_a2_d_e__coll__graph.map | 11 + .../classbayesnet_1_1_a2_d_e__coll__graph.md5 | 1 + .../classbayesnet_1_1_a2_d_e__coll__graph.png | Bin 0 -> 13836 bytes ...assbayesnet_1_1_a2_d_e__inherit__graph.map | 9 + ...assbayesnet_1_1_a2_d_e__inherit__graph.md5 | 1 + ...assbayesnet_1_1_a2_d_e__inherit__graph.png | Bin 0 -> 9888 bytes .../classbayesnet_1_1_a_o_d_e-members.html | 174 + docs/manual/classbayesnet_1_1_a_o_d_e.html | 420 +++ ...classbayesnet_1_1_a_o_d_e__coll__graph.map | 11 + ...classbayesnet_1_1_a_o_d_e__coll__graph.md5 | 1 + ...classbayesnet_1_1_a_o_d_e__coll__graph.png | Bin 0 -> 13955 bytes ...ssbayesnet_1_1_a_o_d_e__inherit__graph.map | 9 + ...ssbayesnet_1_1_a_o_d_e__inherit__graph.md5 | 1 + ...ssbayesnet_1_1_a_o_d_e__inherit__graph.png | Bin 0 -> 10014 bytes .../classbayesnet_1_1_a_o_d_e_ld-members.html | 184 ++ docs/manual/classbayesnet_1_1_a_o_d_e_ld.html | 464 +++ ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.map | 13 + ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 | 1 + ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.png | Bin 0 -> 16871 bytes ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.map | 11 + ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 | 1 + ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.png | Bin 0 -> 13060 bytes ...sbayesnet_1_1_base_classifier-members.html | 142 + .../classbayesnet_1_1_base_classifier.html | 299 ++ ...et_1_1_base_classifier__inherit__graph.map | 33 + ...et_1_1_base_classifier__inherit__graph.md5 | 1 + ...et_1_1_base_classifier__inherit__graph.png | Bin 0 -> 43173 bytes .../classbayesnet_1_1_boost-members.html | 191 ++ docs/manual/classbayesnet_1_1_boost.html | 845 +++++ .../classbayesnet_1_1_boost__coll__graph.map | 11 + .../classbayesnet_1_1_boost__coll__graph.md5 | 1 + .../classbayesnet_1_1_boost__coll__graph.png | Bin 0 -> 13587 bytes ...lassbayesnet_1_1_boost__inherit__graph.map | 13 + ...lassbayesnet_1_1_boost__inherit__graph.md5 | 1 + ...lassbayesnet_1_1_boost__inherit__graph.png | Bin 0 -> 15507 bytes ...lassbayesnet_1_1_boost_a2_d_e-members.html | 193 ++ .../classbayesnet_1_1_boost_a2_d_e.html | 417 +++ ...bayesnet_1_1_boost_a2_d_e__coll__graph.map | 13 + ...bayesnet_1_1_boost_a2_d_e__coll__graph.md5 | 1 + ...bayesnet_1_1_boost_a2_d_e__coll__graph.png | Bin 0 -> 16762 bytes ...esnet_1_1_boost_a2_d_e__inherit__graph.map | 11 + ...esnet_1_1_boost_a2_d_e__inherit__graph.md5 | 1 + ...esnet_1_1_boost_a2_d_e__inherit__graph.png | Bin 0 -> 12635 bytes ...assbayesnet_1_1_boost_a_o_d_e-members.html | 193 ++ .../classbayesnet_1_1_boost_a_o_d_e.html | 417 +++ ...ayesnet_1_1_boost_a_o_d_e__coll__graph.map | 13 + ...ayesnet_1_1_boost_a_o_d_e__coll__graph.md5 | 1 + ...ayesnet_1_1_boost_a_o_d_e__coll__graph.png | Bin 0 -> 16880 bytes ...snet_1_1_boost_a_o_d_e__inherit__graph.map | 11 + ...snet_1_1_boost_a_o_d_e__inherit__graph.md5 | 1 + ...snet_1_1_boost_a_o_d_e__inherit__graph.png | Bin 0 -> 12761 bytes .../classbayesnet_1_1_classifier-members.html | 159 + docs/manual/classbayesnet_1_1_classifier.html | 1348 ++++++++ ...ssbayesnet_1_1_classifier__coll__graph.map | 7 + ...ssbayesnet_1_1_classifier__coll__graph.md5 | 1 + ...ssbayesnet_1_1_classifier__coll__graph.png | Bin 0 -> 8752 bytes ...ayesnet_1_1_classifier__inherit__graph.map | 33 + ...ayesnet_1_1_classifier__inherit__graph.md5 | 1 + ...ayesnet_1_1_classifier__inherit__graph.png | Bin 0 -> 43117 bytes .../classbayesnet_1_1_ensemble-members.html | 172 + docs/manual/classbayesnet_1_1_ensemble.html | 1007 ++++++ ...lassbayesnet_1_1_ensemble__coll__graph.map | 9 + ...lassbayesnet_1_1_ensemble__coll__graph.md5 | 1 + ...lassbayesnet_1_1_ensemble__coll__graph.png | Bin 0 -> 11121 bytes ...sbayesnet_1_1_ensemble__inherit__graph.map | 19 + ...sbayesnet_1_1_ensemble__inherit__graph.md5 | 1 + ...sbayesnet_1_1_ensemble__inherit__graph.png | Bin 0 -> 22170 bytes .../classbayesnet_1_1_k_d_b-members.html | 161 + docs/manual/classbayesnet_1_1_k_d_b.html | 372 +++ .../classbayesnet_1_1_k_d_b__coll__graph.map | 9 + .../classbayesnet_1_1_k_d_b__coll__graph.md5 | 1 + .../classbayesnet_1_1_k_d_b__coll__graph.png | Bin 0 -> 11240 bytes ...lassbayesnet_1_1_k_d_b__inherit__graph.map | 9 + ...lassbayesnet_1_1_k_d_b__inherit__graph.md5 | 1 + ...lassbayesnet_1_1_k_d_b__inherit__graph.png | Bin 0 -> 10088 bytes .../classbayesnet_1_1_k_d_b_ld-members.html | 174 + docs/manual/classbayesnet_1_1_k_d_b_ld.html | 445 +++ ...lassbayesnet_1_1_k_d_b_ld__coll__graph.map | 13 + ...lassbayesnet_1_1_k_d_b_ld__coll__graph.md5 | 1 + ...lassbayesnet_1_1_k_d_b_ld__coll__graph.png | Bin 0 -> 16788 bytes ...sbayesnet_1_1_k_d_b_ld__inherit__graph.map | 11 + ...sbayesnet_1_1_k_d_b_ld__inherit__graph.md5 | 1 + ...sbayesnet_1_1_k_d_b_ld__inherit__graph.png | Bin 0 -> 12914 bytes .../classbayesnet_1_1_network-members.html | 146 + docs/manual/classbayesnet_1_1_network.html | 840 +++++ .../classbayesnet_1_1_node-members.html | 132 + docs/manual/classbayesnet_1_1_node.html | 488 +++ .../classbayesnet_1_1_proposal-members.html | 125 + docs/manual/classbayesnet_1_1_proposal.html | 414 +++ ...sbayesnet_1_1_proposal__inherit__graph.map | 11 + ...sbayesnet_1_1_proposal__inherit__graph.md5 | 1 + ...sbayesnet_1_1_proposal__inherit__graph.png | Bin 0 -> 11225 bytes .../classbayesnet_1_1_s_p_o_d_e-members.html | 161 + docs/manual/classbayesnet_1_1_s_p_o_d_e.html | 339 ++ ...assbayesnet_1_1_s_p_o_d_e__coll__graph.map | 9 + ...assbayesnet_1_1_s_p_o_d_e__coll__graph.md5 | 1 + ...assbayesnet_1_1_s_p_o_d_e__coll__graph.png | Bin 0 -> 11682 bytes ...bayesnet_1_1_s_p_o_d_e__inherit__graph.map | 9 + ...bayesnet_1_1_s_p_o_d_e__inherit__graph.md5 | 1 + ...bayesnet_1_1_s_p_o_d_e__inherit__graph.png | Bin 0 -> 10920 bytes ...lassbayesnet_1_1_s_p_o_d_e_ld-members.html | 176 + .../classbayesnet_1_1_s_p_o_d_e_ld.html | 518 +++ ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.map | 13 + ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 | 1 + ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.png | Bin 0 -> 17423 bytes ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.map | 11 + ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 | 1 + ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.png | Bin 0 -> 13621 bytes .../classbayesnet_1_1_s_pn_d_e-members.html | 161 + docs/manual/classbayesnet_1_1_s_pn_d_e.html | 337 ++ ...lassbayesnet_1_1_s_pn_d_e__coll__graph.map | 9 + ...lassbayesnet_1_1_s_pn_d_e__coll__graph.md5 | 1 + ...lassbayesnet_1_1_s_pn_d_e__coll__graph.png | Bin 0 -> 11430 bytes ...sbayesnet_1_1_s_pn_d_e__inherit__graph.map | 7 + ...sbayesnet_1_1_s_pn_d_e__inherit__graph.md5 | 1 + ...sbayesnet_1_1_s_pn_d_e__inherit__graph.png | Bin 0 -> 7614 bytes .../classbayesnet_1_1_t_a_n-members.html | 161 + docs/manual/classbayesnet_1_1_t_a_n.html | 329 ++ .../classbayesnet_1_1_t_a_n__coll__graph.map | 9 + .../classbayesnet_1_1_t_a_n__coll__graph.md5 | 1 + .../classbayesnet_1_1_t_a_n__coll__graph.png | Bin 0 -> 11120 bytes ...lassbayesnet_1_1_t_a_n__inherit__graph.map | 9 + ...lassbayesnet_1_1_t_a_n__inherit__graph.md5 | 1 + ...lassbayesnet_1_1_t_a_n__inherit__graph.png | Bin 0 -> 9898 bytes .../classbayesnet_1_1_t_a_n_ld-members.html | 174 + docs/manual/classbayesnet_1_1_t_a_n_ld.html | 432 +++ ...lassbayesnet_1_1_t_a_n_ld__coll__graph.map | 13 + ...lassbayesnet_1_1_t_a_n_ld__coll__graph.md5 | 1 + ...lassbayesnet_1_1_t_a_n_ld__coll__graph.png | Bin 0 -> 16530 bytes ...sbayesnet_1_1_t_a_n_ld__inherit__graph.map | 11 + ...sbayesnet_1_1_t_a_n_ld__inherit__graph.md5 | 1 + ...sbayesnet_1_1_t_a_n_ld__inherit__graph.png | Bin 0 -> 12664 bytes docs/manual/classes.html | 143 + docs/manual/clipboard.js | 61 + docs/manual/closed.png | Bin 0 -> 132 bytes docs/manual/cookie.js | 58 + .../dir_2f68445c4ac4316280c650d0a13b2741.html | 155 + .../dir_2f68445c4ac4316280c650d0a13b2741.js | 17 + ...r_2f68445c4ac4316280c650d0a13b2741_dep.map | 4 + ...r_2f68445c4ac4316280c650d0a13b2741_dep.md5 | 1 + ...r_2f68445c4ac4316280c650d0a13b2741_dep.png | Bin 0 -> 2616 bytes .../dir_40070fdff85d618b4d1d3ab4ac4f79bb.html | 129 + .../dir_40070fdff85d618b4d1d3ab4ac4f79bb.js | 7 + .../dir_520a649ed2b1c3b658a695aeefe46a5a.html | 163 + .../dir_520a649ed2b1c3b658a695aeefe46a5a.js | 21 + ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.map | 4 + ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 | 1 + ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.png | Bin 0 -> 2868 bytes .../dir_efcd97b18bba957e8e278307db4f845a.html | 135 + .../dir_efcd97b18bba957e8e278307db4f845a.js | 7 + ...r_efcd97b18bba957e8e278307db4f845a_dep.map | 4 + ...r_efcd97b18bba957e8e278307db4f845a_dep.md5 | 1 + ...r_efcd97b18bba957e8e278307db4f845a_dep.png | Bin 0 -> 2778 bytes docs/manual/doc.svg | 12 + docs/manual/docd.svg | 12 + docs/manual/doxygen.css | 2244 +++++++++++++ docs/manual/doxygen.svg | 28 + docs/manual/doxygen_crawl.html | 163 + docs/manual/dynsections.js | 205 ++ docs/manual/files.html | 158 + docs/manual/files_dup.js | 4 + docs/manual/folderclosed.svg | 11 + docs/manual/folderclosedd.svg | 11 + docs/manual/folderopen.svg | 17 + docs/manual/folderopend.svg | 12 + docs/manual/graph_legend.html | 173 + docs/manual/graph_legend.md5 | 1 + docs/manual/graph_legend.png | Bin 0 -> 22891 bytes docs/manual/hierarchy.html | 142 + docs/manual/hierarchy.js | 34 + docs/manual/index.html | 114 + docs/manual/inherit_graph_0.map | 38 + docs/manual/inherit_graph_0.md5 | 1 + docs/manual/inherit_graph_0.png | Bin 0 -> 44422 bytes docs/manual/inherit_graph_1.map | 3 + docs/manual/inherit_graph_1.md5 | 1 + docs/manual/inherit_graph_1.png | Bin 0 -> 2310 bytes docs/manual/inherit_graph_2.map | 3 + docs/manual/inherit_graph_2.md5 | 1 + docs/manual/inherit_graph_2.png | Bin 0 -> 2036 bytes docs/manual/inherits.html | 167 + docs/manual/jquery.js | 34 + docs/manual/logo_small.png | Bin 0 -> 10855 bytes docs/manual/menu.js | 134 + docs/manual/menudata.js | 32 + docs/manual/minus.svg | 8 + docs/manual/minusd.svg | 8 + docs/manual/nav_f.png | Bin 0 -> 153 bytes docs/manual/nav_fd.png | Bin 0 -> 169 bytes docs/manual/nav_g.png | Bin 0 -> 95 bytes docs/manual/nav_h.png | Bin 0 -> 98 bytes docs/manual/nav_hd.png | Bin 0 -> 114 bytes docs/manual/navtree.css | 149 + docs/manual/navtree.js | 483 +++ docs/manual/navtreedata.js | 45 + docs/manual/navtreeindex0.js | 69 + docs/manual/open.png | Bin 0 -> 123 bytes docs/manual/plus.svg | 9 + docs/manual/plusd.svg | 9 + docs/manual/resize.js | 145 + docs/manual/search/all_0.js | 6 + docs/manual/search/all_1.js | 7 + docs/manual/search/all_2.js | 4 + docs/manual/search/all_3.js | 4 + docs/manual/search/all_4.js | 5 + docs/manual/search/all_5.js | 5 + docs/manual/search/all_6.js | 4 + docs/manual/search/all_7.js | 6 + docs/manual/search/all_8.js | 5 + docs/manual/search/classes_0.js | 6 + docs/manual/search/classes_1.js | 7 + docs/manual/search/classes_2.js | 4 + docs/manual/search/classes_3.js | 4 + docs/manual/search/classes_4.js | 5 + docs/manual/search/classes_5.js | 5 + docs/manual/search/classes_6.js | 4 + docs/manual/search/classes_7.js | 6 + docs/manual/search/classes_8.js | 5 + docs/manual/search/close.svg | 18 + docs/manual/search/mag.svg | 24 + docs/manual/search/mag_d.svg | 24 + docs/manual/search/mag_sel.svg | 31 + docs/manual/search/mag_seld.svg | 31 + docs/manual/search/search.css | 291 ++ docs/manual/search/search.js | 694 ++++ docs/manual/search/searchdata.js | 18 + docs/manual/splitbar.png | Bin 0 -> 314 bytes docs/manual/splitbard.png | Bin 0 -> 282 bytes docs/manual/sync_off.png | Bin 0 -> 853 bytes docs/manual/sync_on.png | Bin 0 -> 845 bytes docs/manual/tab_a.png | Bin 0 -> 142 bytes docs/manual/tab_ad.png | Bin 0 -> 135 bytes docs/manual/tab_b.png | Bin 0 -> 169 bytes docs/manual/tab_bd.png | Bin 0 -> 173 bytes docs/manual/tab_h.png | Bin 0 -> 177 bytes docs/manual/tab_hd.png | Bin 0 -> 180 bytes docs/manual/tab_s.png | Bin 0 -> 184 bytes docs/manual/tab_sd.png | Bin 0 -> 188 bytes docs/manual/tabs.css | 1 + 303 files changed, 35356 insertions(+) create mode 100644 docs/Doxyfile create mode 100644 docs/logo_small.png create mode 100644 docs/man3/bayesnet_A2DE.3 create mode 100644 docs/man3/bayesnet_AODE.3 create mode 100644 docs/man3/bayesnet_AODELd.3 create mode 100644 docs/man3/bayesnet_BaseClassifier.3 create mode 100644 docs/man3/bayesnet_Boost.3 create mode 100644 docs/man3/bayesnet_BoostA2DE.3 create mode 100644 docs/man3/bayesnet_BoostAODE.3 create mode 100644 docs/man3/bayesnet_Classifier.3 create mode 100644 docs/man3/bayesnet_Ensemble.3 create mode 100644 docs/man3/bayesnet_KDB.3 create mode 100644 docs/man3/bayesnet_KDBLd.3 create mode 100644 docs/man3/bayesnet_Network.3 create mode 100644 docs/man3/bayesnet_Node.3 create mode 100644 docs/man3/bayesnet_Proposal.3 create mode 100644 docs/man3/bayesnet_SPODE.3 create mode 100644 docs/man3/bayesnet_SPODELd.3 create mode 100644 docs/man3/bayesnet_SPnDE.3 create mode 100644 docs/man3/bayesnet_TAN.3 create mode 100644 docs/man3/bayesnet_TANLd.3 create mode 100644 docs/manual/_a2_d_e_8cc_source.html create mode 100644 docs/manual/_a2_d_e_8h_source.html create mode 100644 docs/manual/_a_o_d_e_8cc_source.html create mode 100644 docs/manual/_a_o_d_e_8h_source.html create mode 100644 docs/manual/_a_o_d_e_ld_8cc_source.html create mode 100644 docs/manual/_a_o_d_e_ld_8h_source.html create mode 100644 docs/manual/_base_classifier_8h_source.html create mode 100644 docs/manual/_boost_8cc_source.html create mode 100644 docs/manual/_boost_8h_source.html create mode 100644 docs/manual/_boost_a2_d_e_8cc_source.html create mode 100644 docs/manual/_boost_a2_d_e_8h_source.html create mode 100644 docs/manual/_boost_a_o_d_e_8cc_source.html create mode 100644 docs/manual/_boost_a_o_d_e_8h_source.html create mode 100644 docs/manual/_classifier_8cc_source.html create mode 100644 docs/manual/_classifier_8h_source.html create mode 100644 docs/manual/_ensemble_8cc_source.html create mode 100644 docs/manual/_ensemble_8h_source.html create mode 100644 docs/manual/_k_d_b_8cc_source.html create mode 100644 docs/manual/_k_d_b_8h_source.html create mode 100644 docs/manual/_k_d_b_ld_8cc_source.html create mode 100644 docs/manual/_k_d_b_ld_8h_source.html create mode 100644 docs/manual/_network_8cc_source.html create mode 100644 docs/manual/_network_8h_source.html create mode 100644 docs/manual/_node_8cc_source.html create mode 100644 docs/manual/_node_8h_source.html create mode 100644 docs/manual/_proposal_8cc_source.html create mode 100644 docs/manual/_proposal_8h_source.html create mode 100644 docs/manual/_s_p_o_d_e_8cc_source.html create mode 100644 docs/manual/_s_p_o_d_e_8h_source.html create mode 100644 docs/manual/_s_p_o_d_e_ld_8cc_source.html create mode 100644 docs/manual/_s_p_o_d_e_ld_8h_source.html create mode 100644 docs/manual/_s_pn_d_e_8cc_source.html create mode 100644 docs/manual/_s_pn_d_e_8h_source.html create mode 100644 docs/manual/_t_a_n_8cc_source.html create mode 100644 docs/manual/_t_a_n_8h_source.html create mode 100644 docs/manual/_t_a_n_ld_8cc_source.html create mode 100644 docs/manual/_t_a_n_ld_8h_source.html create mode 100644 docs/manual/annotated.html create mode 100644 docs/manual/annotated_dup.js create mode 100644 docs/manual/bc_s.png create mode 100644 docs/manual/bc_sd.png create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld-members.html create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld.html create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_base_classifier-members.html create mode 100644 docs/manual/classbayesnet_1_1_base_classifier.html create mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost-members.html create mode 100644 docs/manual/classbayesnet_1_1_boost.html create mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_classifier-members.html create mode 100644 docs/manual/classbayesnet_1_1_classifier.html create mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_ensemble-members.html create mode 100644 docs/manual/classbayesnet_1_1_ensemble.html create mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_k_d_b-members.html create mode 100644 docs/manual/classbayesnet_1_1_k_d_b.html create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld-members.html create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld.html create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_network-members.html create mode 100644 docs/manual/classbayesnet_1_1_network.html create mode 100644 docs/manual/classbayesnet_1_1_node-members.html create mode 100644 docs/manual/classbayesnet_1_1_node.html create mode 100644 docs/manual/classbayesnet_1_1_proposal-members.html create mode 100644 docs/manual/classbayesnet_1_1_proposal.html create mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e-members.html create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e.html create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_t_a_n-members.html create mode 100644 docs/manual/classbayesnet_1_1_t_a_n.html create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld-members.html create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld.html create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.map create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 create mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png create mode 100644 docs/manual/classes.html create mode 100644 docs/manual/clipboard.js create mode 100644 docs/manual/closed.png create mode 100644 docs/manual/cookie.js create mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html create mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js create mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map create mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 create mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png create mode 100644 docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html create mode 100644 docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js create mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html create mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js create mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map create mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 create mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png create mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a.html create mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js create mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map create mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 create mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png create mode 100644 docs/manual/doc.svg create mode 100644 docs/manual/docd.svg create mode 100644 docs/manual/doxygen.css create mode 100644 docs/manual/doxygen.svg create mode 100644 docs/manual/doxygen_crawl.html create mode 100644 docs/manual/dynsections.js create mode 100644 docs/manual/files.html create mode 100644 docs/manual/files_dup.js create mode 100644 docs/manual/folderclosed.svg create mode 100644 docs/manual/folderclosedd.svg create mode 100644 docs/manual/folderopen.svg create mode 100644 docs/manual/folderopend.svg create mode 100644 docs/manual/graph_legend.html create mode 100644 docs/manual/graph_legend.md5 create mode 100644 docs/manual/graph_legend.png create mode 100644 docs/manual/hierarchy.html create mode 100644 docs/manual/hierarchy.js create mode 100644 docs/manual/index.html create mode 100644 docs/manual/inherit_graph_0.map create mode 100644 docs/manual/inherit_graph_0.md5 create mode 100644 docs/manual/inherit_graph_0.png create mode 100644 docs/manual/inherit_graph_1.map create mode 100644 docs/manual/inherit_graph_1.md5 create mode 100644 docs/manual/inherit_graph_1.png create mode 100644 docs/manual/inherit_graph_2.map create mode 100644 docs/manual/inherit_graph_2.md5 create mode 100644 docs/manual/inherit_graph_2.png create mode 100644 docs/manual/inherits.html create mode 100644 docs/manual/jquery.js create mode 100644 docs/manual/logo_small.png create mode 100644 docs/manual/menu.js create mode 100644 docs/manual/menudata.js create mode 100644 docs/manual/minus.svg create mode 100644 docs/manual/minusd.svg create mode 100644 docs/manual/nav_f.png create mode 100644 docs/manual/nav_fd.png create mode 100644 docs/manual/nav_g.png create mode 100644 docs/manual/nav_h.png create mode 100644 docs/manual/nav_hd.png create mode 100644 docs/manual/navtree.css create mode 100644 docs/manual/navtree.js create mode 100644 docs/manual/navtreedata.js create mode 100644 docs/manual/navtreeindex0.js create mode 100644 docs/manual/open.png create mode 100644 docs/manual/plus.svg create mode 100644 docs/manual/plusd.svg create mode 100644 docs/manual/resize.js create mode 100644 docs/manual/search/all_0.js create mode 100644 docs/manual/search/all_1.js create mode 100644 docs/manual/search/all_2.js create mode 100644 docs/manual/search/all_3.js create mode 100644 docs/manual/search/all_4.js create mode 100644 docs/manual/search/all_5.js create mode 100644 docs/manual/search/all_6.js create mode 100644 docs/manual/search/all_7.js create mode 100644 docs/manual/search/all_8.js create mode 100644 docs/manual/search/classes_0.js create mode 100644 docs/manual/search/classes_1.js create mode 100644 docs/manual/search/classes_2.js create mode 100644 docs/manual/search/classes_3.js create mode 100644 docs/manual/search/classes_4.js create mode 100644 docs/manual/search/classes_5.js create mode 100644 docs/manual/search/classes_6.js create mode 100644 docs/manual/search/classes_7.js create mode 100644 docs/manual/search/classes_8.js create mode 100644 docs/manual/search/close.svg create mode 100644 docs/manual/search/mag.svg create mode 100644 docs/manual/search/mag_d.svg create mode 100644 docs/manual/search/mag_sel.svg create mode 100644 docs/manual/search/mag_seld.svg create mode 100644 docs/manual/search/search.css create mode 100644 docs/manual/search/search.js create mode 100644 docs/manual/search/searchdata.js create mode 100644 docs/manual/splitbar.png create mode 100644 docs/manual/splitbard.png create mode 100644 docs/manual/sync_off.png create mode 100644 docs/manual/sync_on.png create mode 100644 docs/manual/tab_a.png create mode 100644 docs/manual/tab_ad.png create mode 100644 docs/manual/tab_b.png create mode 100644 docs/manual/tab_bd.png create mode 100644 docs/manual/tab_h.png create mode 100644 docs/manual/tab_hd.png create mode 100644 docs/manual/tab_s.png create mode 100644 docs/manual/tab_sd.png create mode 100644 docs/manual/tabs.css diff --git a/docs/Doxyfile b/docs/Doxyfile new file mode 100644 index 0000000..147e0b5 --- /dev/null +++ b/docs/Doxyfile @@ -0,0 +1,2911 @@ +# Doxyfile 1.11.0 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = BayesNet + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.0.5 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Bayesian Network Classifiers using libtorch from scratch" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = /Users/rmontanana/Code/BayesNet/docs/logo_small.png + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = /Users/rmontanana/Code/BayesNet/docs + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 6 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = /Users/rmontanana/Code/BayesNet/bayesnet + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.ixx \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = feature_selection/* \ + utils/* \ + tests/* \ + examples/* \ + bayesnet/tests/* \ + bayesnet/examples/* \ + bayesnet/utils/* \ + bayesnet/feature_selection/* +EXCLUDE += utils/* + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */feature_selection/* +EXCLUDE_PATTERNS += */utils/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = manual + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Ricardo Montañana Gómez + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , / diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 new file mode 100644 index 0000000..8da87ae --- /dev/null +++ b/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 @@ -0,0 +1 @@ +464954a9aef0437aadb100e747a29b93 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4240afd7b461da41f5941be8c5cc95c822423003 GIT binary patch literal 12914 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 literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_network-members.html b/docs/manual/classbayesnet_1_1_network-members.html new file mode 100644 index 0000000..7f66917 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_network-members.html @@ -0,0 +1,146 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::Network Member List
+
+
+ +

This is the complete list of members for bayesnet::Network, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addEdge(const std::string &, const std::string &) (defined in bayesnet::Network)bayesnet::Network
addNode(const std::string &) (defined in bayesnet::Network)bayesnet::Network
dump_cpt() const (defined in bayesnet::Network)bayesnet::Network
fit(const std::vector< std::vector< int > > &input_data, const std::vector< int > &labels, const std::vector< double > &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
fit(const torch::Tensor &X, const torch::Tensor &y, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
fit(const torch::Tensor &samples, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
getClassName() const (defined in bayesnet::Network)bayesnet::Network
getClassNumStates() const (defined in bayesnet::Network)bayesnet::Network
getEdges() const (defined in bayesnet::Network)bayesnet::Network
getFeatures() const (defined in bayesnet::Network)bayesnet::Network
getMaxThreads() const (defined in bayesnet::Network)bayesnet::Network
getNodes() (defined in bayesnet::Network)bayesnet::Network
getNumEdges() const (defined in bayesnet::Network)bayesnet::Network
getSamples() (defined in bayesnet::Network)bayesnet::Network
getStates() const (defined in bayesnet::Network)bayesnet::Network
graph(const std::string &title) const (defined in bayesnet::Network)bayesnet::Network
initialize() (defined in bayesnet::Network)bayesnet::Network
Network() (defined in bayesnet::Network)bayesnet::Network
Network(float) (defined in bayesnet::Network)bayesnet::Networkexplicit
Network(const Network &) (defined in bayesnet::Network)bayesnet::Networkexplicit
predict(const std::vector< std::vector< int > > &) (defined in bayesnet::Network)bayesnet::Network
predict(const torch::Tensor &) (defined in bayesnet::Network)bayesnet::Network
predict_proba(const std::vector< std::vector< int > > &) (defined in bayesnet::Network)bayesnet::Network
predict_proba(const torch::Tensor &) (defined in bayesnet::Network)bayesnet::Network
predict_tensor(const torch::Tensor &samples, const bool proba) (defined in bayesnet::Network)bayesnet::Network
score(const std::vector< std::vector< int > > &, const std::vector< int > &) (defined in bayesnet::Network)bayesnet::Network
show() const (defined in bayesnet::Network)bayesnet::Network
topological_sort() (defined in bayesnet::Network)bayesnet::Network
version() (defined in bayesnet::Network)bayesnet::Networkinline
~Network()=default (defined in bayesnet::Network)bayesnet::Network
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_network.html b/docs/manual/classbayesnet_1_1_network.html new file mode 100644 index 0000000..252deae --- /dev/null +++ b/docs/manual/classbayesnet_1_1_network.html @@ -0,0 +1,840 @@ + + + + + + + +BayesNet: bayesnet::Network Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::Network Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Network (float)
 
 Network (const Network &)
 
torch::Tensor & getSamples ()
 
float getMaxThreads () const
 
void addNode (const std::string &)
 
void addEdge (const std::string &, const std::string &)
 
std::map< std::string, std::unique_ptr< Node > > & getNodes ()
 
std::vector< std::string > getFeatures () const
 
int getStates () const
 
std::vector< std::pair< std::string, std::string > > getEdges () const
 
int getNumEdges () const
 
int getClassNumStates () const
 
std::string getClassName () const
 
void fit (const std::vector< std::vector< int > > &input_data, const std::vector< int > &labels, const std::vector< double > &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
 
void fit (const torch::Tensor &X, const torch::Tensor &y, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
 
void fit (const torch::Tensor &samples, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
 
std::vector< int > predict (const std::vector< std::vector< int > > &)
 
torch::Tensor predict (const torch::Tensor &)
 
torch::Tensor predict_tensor (const torch::Tensor &samples, const bool proba)
 
std::vector< std::vector< double > > predict_proba (const std::vector< std::vector< int > > &)
 
torch::Tensor predict_proba (const torch::Tensor &)
 
double score (const std::vector< std::vector< int > > &, const std::vector< int > &)
 
std::vector< std::string > topological_sort ()
 
std::vector< std::string > show () const
 
std::vector< std::string > graph (const std::string &title) const
 
void initialize ()
 
std::string dump_cpt () const
 
std::string version ()
 
+

Detailed Description

+
+

Definition at line 15 of file Network.h.

+

Constructor & Destructor Documentation

+ +

◆ Network() [1/3]

+ +
+
+ + + + + + + +
bayesnet::Network::Network ()
+
+ +

Definition at line 13 of file Network.cc.

+ +
+
+ +

◆ Network() [2/3]

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::Network::Network (float maxT)
+
+explicit
+
+ +

Definition at line 16 of file Network.cc.

+ +
+
+ +

◆ Network() [3/3]

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::Network::Network (const Network & other)
+
+explicit
+
+ +

Definition at line 20 of file Network.cc.

+ +
+
+

Member Function Documentation

+ +

◆ addEdge()

+ +
+
+ + + + + + + + + + + +
void bayesnet::Network::addEdge (const std::string & parent,
const std::string & child )
+
+ +

Definition at line 95 of file Network.cc.

+ +
+
+ +

◆ addNode()

+ +
+
+ + + + + + + +
void bayesnet::Network::addNode (const std::string & name)
+
+ +

Definition at line 46 of file Network.cc.

+ +
+
+ +

◆ dump_cpt()

+ +
+
+ + + + + + + +
std::string bayesnet::Network::dump_cpt () const
+
+ +

Definition at line 420 of file Network.cc.

+ +
+
+ +

◆ fit() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void bayesnet::Network::fit (const std::vector< std::vector< int > > & input_data,
const std::vector< int > & labels,
const std::vector< double > & weights,
const std::vector< std::string > & featureNames,
const std::string & className,
const std::map< std::string, std::vector< int > > & states )
+
+ +

Definition at line 177 of file Network.cc.

+ +
+
+ +

◆ fit() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void bayesnet::Network::fit (const torch::Tensor & samples,
const torch::Tensor & weights,
const std::vector< std::string > & featureNames,
const std::string & className,
const std::map< std::string, std::vector< int > > & states )
+
+ +

Definition at line 169 of file Network.cc.

+ +
+
+ +

◆ fit() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void bayesnet::Network::fit (const torch::Tensor & X,
const torch::Tensor & y,
const torch::Tensor & weights,
const std::vector< std::string > & featureNames,
const std::string & className,
const std::map< std::string, std::vector< int > > & states )
+
+ +

Definition at line 158 of file Network.cc.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + + + +
std::string bayesnet::Network::getClassName () const
+
+ +

Definition at line 75 of file Network.cc.

+ +
+
+ +

◆ getClassNumStates()

+ +
+
+ + + + + + + +
int bayesnet::Network::getClassNumStates () const
+
+ +

Definition at line 63 of file Network.cc.

+ +
+
+ +

◆ getEdges()

+ +
+
+ + + + + + + +
std::vector< std::pair< std::string, std::string > > bayesnet::Network::getEdges () const
+
+ +

Definition at line 371 of file Network.cc.

+ +
+
+ +

◆ getFeatures()

+ +
+
+ + + + + + + +
std::vector< std::string > bayesnet::Network::getFeatures () const
+
+ +

Definition at line 59 of file Network.cc.

+ +
+
+ +

◆ getMaxThreads()

+ +
+
+ + + + + + + +
float bayesnet::Network::getMaxThreads () const
+
+ +

Definition at line 38 of file Network.cc.

+ +
+
+ +

◆ getNodes()

+ +
+
+ + + + + + + +
std::map< std::string, std::unique_ptr< Node > > & bayesnet::Network::getNodes ()
+
+ +

Definition at line 116 of file Network.cc.

+ +
+
+ +

◆ getNumEdges()

+ +
+
+ + + + + + + +
int bayesnet::Network::getNumEdges () const
+
+ +

Definition at line 383 of file Network.cc.

+ +
+
+ +

◆ getSamples()

+ +
+
+ + + + + + + +
torch::Tensor & bayesnet::Network::getSamples ()
+
+ +

Definition at line 42 of file Network.cc.

+ +
+
+ +

◆ getStates()

+ +
+
+ + + + + + + +
int bayesnet::Network::getStates () const
+
+ +

Definition at line 67 of file Network.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + + + +
std::vector< std::string > bayesnet::Network::graph (const std::string & title) const
+
+ +

Definition at line 357 of file Network.cc.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + + + +
void bayesnet::Network::initialize ()
+
+ +

Definition at line 29 of file Network.cc.

+ +
+
+ +

◆ predict() [1/2]

+ +
+
+ + + + + + + +
std::vector< int > bayesnet::Network::predict (const std::vector< std::vector< int > > & tsamples)
+
+ +

Definition at line 237 of file Network.cc.

+ +
+
+ +

◆ predict() [2/2]

+ +
+
+ + + + + + + +
torch::Tensor bayesnet::Network::predict (const torch::Tensor & samples)
+
+ +

Definition at line 230 of file Network.cc.

+ +
+
+ +

◆ predict_proba() [1/2]

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > bayesnet::Network::predict_proba (const std::vector< std::vector< int > > & tsamples)
+
+ +

Definition at line 259 of file Network.cc.

+ +
+
+ +

◆ predict_proba() [2/2]

+ +
+
+ + + + + + + +
torch::Tensor bayesnet::Network::predict_proba (const torch::Tensor & samples)
+
+ +

Definition at line 224 of file Network.cc.

+ +
+
+ +

◆ predict_tensor()

+ +
+
+ + + + + + + + + + + +
torch::Tensor bayesnet::Network::predict_tensor (const torch::Tensor & samples,
const bool proba )
+
+ +

Definition at line 205 of file Network.cc.

+ +
+
+ +

◆ score()

+ +
+
+ + + + + + + + + + + +
double bayesnet::Network::score (const std::vector< std::vector< int > > & tsamples,
const std::vector< int > & labels )
+
+ +

Definition at line 275 of file Network.cc.

+ +
+
+ +

◆ show()

+ +
+
+ + + + + + + +
std::vector< std::string > bayesnet::Network::show () const
+
+ +

Definition at line 344 of file Network.cc.

+ +
+
+ +

◆ topological_sort()

+ +
+
+ + + + + + + +
std::vector< std::string > bayesnet::Network::topological_sort ()
+
+ +

Definition at line 387 of file Network.cc.

+ +
+
+ +

◆ version()

+ +
+
+ + + + + +
+ + + + + + + +
std::string bayesnet::Network::version ()
+
+inline
+
+ +

Definition at line 49 of file Network.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_node-members.html b/docs/manual/classbayesnet_1_1_node-members.html new file mode 100644 index 0000000..e8f9f24 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_node-members.html @@ -0,0 +1,132 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::Node Member List
+
+
+ +

This is the complete list of members for bayesnet::Node, including all inherited members.

+ + + + + + + + + + + + + + + + + +
addChild(Node *) (defined in bayesnet::Node)bayesnet::Node
addParent(Node *) (defined in bayesnet::Node)bayesnet::Node
clear() (defined in bayesnet::Node)bayesnet::Node
computeCPT(const torch::Tensor &dataset, const std::vector< std::string > &features, const double laplaceSmoothing, const torch::Tensor &weights) (defined in bayesnet::Node)bayesnet::Node
getChildren() (defined in bayesnet::Node)bayesnet::Node
getCPT() (defined in bayesnet::Node)bayesnet::Node
getFactorValue(std::map< std::string, int > &) (defined in bayesnet::Node)bayesnet::Node
getName() const (defined in bayesnet::Node)bayesnet::Node
getNumStates() const (defined in bayesnet::Node)bayesnet::Node
getParents() (defined in bayesnet::Node)bayesnet::Node
graph(const std::string &clasName) (defined in bayesnet::Node)bayesnet::Node
minFill() (defined in bayesnet::Node)bayesnet::Node
Node(const std::string &) (defined in bayesnet::Node)bayesnet::Nodeexplicit
removeChild(Node *) (defined in bayesnet::Node)bayesnet::Node
removeParent(Node *) (defined in bayesnet::Node)bayesnet::Node
setNumStates(int) (defined in bayesnet::Node)bayesnet::Node
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_node.html b/docs/manual/classbayesnet_1_1_node.html new file mode 100644 index 0000000..2b9c143 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_node.html @@ -0,0 +1,488 @@ + + + + + + + +BayesNet: bayesnet::Node Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::Node Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Node (const std::string &)
 
void clear ()
 
void addParent (Node *)
 
void addChild (Node *)
 
void removeParent (Node *)
 
void removeChild (Node *)
 
std::string getName () const
 
std::vector< Node * > & getParents ()
 
std::vector< Node * > & getChildren ()
 
torch::Tensor & getCPT ()
 
void computeCPT (const torch::Tensor &dataset, const std::vector< std::string > &features, const double laplaceSmoothing, const torch::Tensor &weights)
 
int getNumStates () const
 
void setNumStates (int)
 
unsigned minFill ()
 
std::vector< std::string > graph (const std::string &clasName)
 
float getFactorValue (std::map< std::string, int > &)
 
+

Detailed Description

+
+

Definition at line 14 of file Node.h.

+

Constructor & Destructor Documentation

+ +

◆ Node()

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::Node::Node (const std::string & name)
+
+explicit
+
+ +

Definition at line 11 of file Node.cc.

+ +
+
+

Member Function Documentation

+ +

◆ addChild()

+ +
+
+ + + + + + + +
void bayesnet::Node::addChild (Node * child)
+
+ +

Definition at line 39 of file Node.cc.

+ +
+
+ +

◆ addParent()

+ +
+
+ + + + + + + +
void bayesnet::Node::addParent (Node * parent)
+
+ +

Definition at line 27 of file Node.cc.

+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + +
void bayesnet::Node::clear ()
+
+ +

Definition at line 15 of file Node.cc.

+ +
+
+ +

◆ computeCPT()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void bayesnet::Node::computeCPT (const torch::Tensor & dataset,
const std::vector< std::string > & features,
const double laplaceSmoothing,
const torch::Tensor & weights )
+
+ +

Definition at line 93 of file Node.cc.

+ +
+
+ +

◆ getChildren()

+ +
+
+ + + + + + + +
std::vector< Node * > & bayesnet::Node::getChildren ()
+
+ +

Definition at line 47 of file Node.cc.

+ +
+
+ +

◆ getCPT()

+ +
+
+ + + + + + + +
torch::Tensor & bayesnet::Node::getCPT ()
+
+ +

Definition at line 59 of file Node.cc.

+ +
+
+ +

◆ getFactorValue()

+ +
+
+ + + + + + + +
float bayesnet::Node::getFactorValue (std::map< std::string, int > & evidence)
+
+ +

Definition at line 124 of file Node.cc.

+ +
+
+ +

◆ getName()

+ +
+
+ + + + + + + +
std::string bayesnet::Node::getName () const
+
+ +

Definition at line 23 of file Node.cc.

+ +
+
+ +

◆ getNumStates()

+ +
+
+ + + + + + + +
int bayesnet::Node::getNumStates () const
+
+ +

Definition at line 51 of file Node.cc.

+ +
+
+ +

◆ getParents()

+ +
+
+ + + + + + + +
std::vector< Node * > & bayesnet::Node::getParents ()
+
+ +

Definition at line 43 of file Node.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + + + +
std::vector< std::string > bayesnet::Node::graph (const std::string & clasName)
+
+ +

Definition at line 132 of file Node.cc.

+ +
+
+ +

◆ minFill()

+ +
+
+ + + + + + + +
unsigned bayesnet::Node::minFill ()
+
+ +

Definition at line 70 of file Node.cc.

+ +
+
+ +

◆ removeChild()

+ +
+
+ + + + + + + +
void bayesnet::Node::removeChild (Node * child)
+
+ +

Definition at line 35 of file Node.cc.

+ +
+
+ +

◆ removeParent()

+ +
+
+ + + + + + + +
void bayesnet::Node::removeParent (Node * parent)
+
+ +

Definition at line 31 of file Node.cc.

+ +
+
+ +

◆ setNumStates()

+ +
+
+ + + + + + + +
void bayesnet::Node::setNumStates (int numStates)
+
+ +

Definition at line 55 of file Node.cc.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_proposal-members.html b/docs/manual/classbayesnet_1_1_proposal-members.html new file mode 100644 index 0000000..57aca7a --- /dev/null +++ b/docs/manual/classbayesnet_1_1_proposal-members.html @@ -0,0 +1,125 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::Proposal Member List
+
+
+ +

This is the complete list of members for bayesnet::Proposal, including all inherited members.

+ + + + + + + + + + +
checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_proposal.html b/docs/manual/classbayesnet_1_1_proposal.html new file mode 100644 index 0000000..0003bbe --- /dev/null +++ b/docs/manual/classbayesnet_1_1_proposal.html @@ -0,0 +1,414 @@ + + + + + + + +BayesNet: bayesnet::Proposal Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for bayesnet::Proposal:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + +

+Public Member Functions

 Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
 
+ + + + + + + + + +

+Protected Member Functions

void checkInput (const torch::Tensor &X, const torch::Tensor &y)
 
torch::Tensor prepareX (torch::Tensor &X)
 
map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
 
map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
 
+ + + + + + + +

+Protected Attributes

torch::Tensor Xf
 
torch::Tensor y
 
map< std::string, mdlp::CPPFImdlp * > discretizers
 
+

Detailed Description

+
+

Definition at line 17 of file Proposal.h.

+

Constructor & Destructor Documentation

+ +

◆ Proposal()

+ +
+
+ + + + + + + + + + + + + + + + +
bayesnet::Proposal::Proposal (torch::Tensor & pDataset,
std::vector< std::string > & features_,
std::string & className_ )
+
+ +

Definition at line 10 of file Proposal.cc.

+ +
+
+ +

◆ ~Proposal()

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::Proposal::~Proposal ()
+
+virtual
+
+ +

Definition at line 11 of file Proposal.cc.

+ +
+
+

Member Function Documentation

+ +

◆ checkInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void bayesnet::Proposal::checkInput (const torch::Tensor & X,
const torch::Tensor & y )
+
+protected
+
+ +

Definition at line 17 of file Proposal.cc.

+ +
+
+ +

◆ fit_local_discretization()

+ +
+
+ + + + + +
+ + + + + + + +
map< std::string, std::vector< int > > bayesnet::Proposal::fit_local_discretization (const torch::Tensor & y)
+
+protected
+
+ +

Definition at line 77 of file Proposal.cc.

+ +
+
+ +

◆ localDiscretizationProposal()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
map< std::string, std::vector< int > > bayesnet::Proposal::localDiscretizationProposal (const map< std::string, std::vector< int > > & states,
Network & model )
+
+protected
+
+ +

Definition at line 26 of file Proposal.cc.

+ +
+
+ +

◆ prepareX()

+ +
+
+ + + + + +
+ + + + + + + +
torch::Tensor bayesnet::Proposal::prepareX (torch::Tensor & X)
+
+protected
+
+ +

Definition at line 104 of file Proposal.cc.

+ +
+
+

Member Data Documentation

+ +

◆ discretizers

+ +
+
+ + + + + +
+ + + + +
map<std::string, mdlp::CPPFImdlp*> bayesnet::Proposal::discretizers
+
+protected
+
+ +

Definition at line 28 of file Proposal.h.

+ +
+
+ +

◆ Xf

+ +
+
+ + + + + +
+ + + + +
torch::Tensor bayesnet::Proposal::Xf
+
+protected
+
+ +

Definition at line 26 of file Proposal.h.

+ +
+
+ +

◆ y

+ +
+
+ + + + + +
+ + + + +
torch::Tensor bayesnet::Proposal::y
+
+protected
+
+ +

Definition at line 27 of file Proposal.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map new file mode 100644 index 0000000..36e081a --- /dev/null +++ b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 new file mode 100644 index 0000000..5104bf9 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 @@ -0,0 +1 @@ +ebc49cb39da6e0edf6f34e086690a717 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.png b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..58d8a633ca34b28e7ea352f0a9ccc7f4c85677b0 GIT binary patch literal 11225 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 g@Bew}McmP>_CBa?W-(0wT3v{wn4D + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::SPODE Member List
+
+
+ +

This is the complete list of members for bayesnet::SPODE, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPODE)bayesnet::SPODEprotectedvirtual
checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
graph(const std::string &name="SPODE") const override (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
SPODE(int root) (defined in bayesnet::SPODE)bayesnet::SPODEexplicit
states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
~SPODE()=default (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e.html new file mode 100644 index 0000000..aa7f1e4 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e.html @@ -0,0 +1,339 @@ + + + + + + + +BayesNet: bayesnet::SPODE Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::SPODE Class Reference
+
+
+
+Inheritance diagram for bayesnet::SPODE:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for bayesnet::SPODE:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SPODE (int root)
 
std::vector< std::string > graph (const std::string &name="SPODE") const override
 
- Public Member Functions inherited from bayesnet::Classifier
 Classifier (Network model)
 
Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
 
void addNodes ()
 
int getNumberOfNodes () const override
 
int getNumberOfEdges () const override
 
int getNumberOfStates () const override
 
int getClassNumStates () const override
 
torch::Tensor predict (torch::Tensor &X) override
 
std::vector< int > predict (std::vector< std::vector< int > > &X) override
 
torch::Tensor predict_proba (torch::Tensor &X) override
 
std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
 
status_t getStatus () const override
 
std::string getVersion () override
 
float score (torch::Tensor &X, torch::Tensor &y) override
 
float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
 
std::vector< std::string > show () const override
 
std::vector< std::string > topological_order () override
 
std::vector< std::string > getNotes () const override
 
std::string dump_cpt () const override
 
void setHyperparameters (const nlohmann::json &hyperparameters) override
 
- Public Member Functions inherited from bayesnet::BaseClassifier
std::vector< std::string > & getValidHyperparameters ()
 
+ + + + + + + + + + +

+Protected Member Functions

void buildModel (const torch::Tensor &weights) override
 
- Protected Member Functions inherited from bayesnet::Classifier
void checkFitParameters ()
 
void trainModel (const torch::Tensor &weights) override
 
void buildDataset (torch::Tensor &y)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from bayesnet::Classifier
bool fitted
 
unsigned int m
 
unsigned int n
 
Network model
 
Metrics metrics
 
std::vector< std::string > features
 
std::string className
 
std::map< std::string, std::vector< int > > states
 
torch::Tensor dataset
 
status_t status = NORMAL
 
std::vector< std::string > notes
 
- Protected Attributes inherited from bayesnet::BaseClassifier
std::vector< std::string > validHyperparameters
 
+

Detailed Description

+
+

Definition at line 12 of file SPODE.h.

+

Constructor & Destructor Documentation

+ +

◆ SPODE()

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::SPODE::SPODE (int root)
+
+explicit
+
+ +

Definition at line 11 of file SPODE.cc.

+ +
+
+

Member Function Documentation

+ +

◆ buildModel()

+ +
+
+ + + + + +
+ + + + + + + +
void bayesnet::SPODE::buildModel (const torch::Tensor & weights)
+
+overrideprotectedvirtual
+
+ +

Implements bayesnet::Classifier.

+ +

Definition at line 13 of file SPODE.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > bayesnet::SPODE::graph (const std::string & name = "SPODE") const
+
+overridevirtual
+
+ +

Implements bayesnet::BaseClassifier.

+ +

Definition at line 26 of file SPODE.cc.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map new file mode 100644 index 0000000..136e08b --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 new file mode 100644 index 0000000..3e45214 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 @@ -0,0 +1 @@ +a7ba010489f508859de8b2a34852703b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72bb1578a70a11e5d9b17cfe9ac7230449d2ea2d GIT binary patch literal 11682 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 Q=^9Z}(pD^!w|M&B01A?t?*IS* literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map new file mode 100644 index 0000000..94db074 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 new file mode 100644 index 0000000..7d139bf --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 @@ -0,0 +1 @@ +660b58c59a98cc1f67bff80bae3c1de8 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..16e3eb5eb3b372deb9cf3a0ae06ecb53c5792323 GIT binary patch literal 10920 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 KsA4H2|NjG7+68+6 literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html new file mode 100644 index 0000000..6e68e07 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html @@ -0,0 +1,176 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::SPODELd Member List
+
+
+ +

This is the complete list of members for bayesnet::SPODELd, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPODE)bayesnet::SPODEprotectedvirtual
checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
commonFit(const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) (defined in bayesnet::SPODELd)bayesnet::SPODELd
dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::SPODELd)bayesnet::SPODELd
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::SPODELd)bayesnet::SPODELd
fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
graph(const std::string &name="SPODE") const override (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
predict(torch::Tensor &X) override (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
SPODE(int root) (defined in bayesnet::SPODE)bayesnet::SPODEexplicit
SPODELd(int root) (defined in bayesnet::SPODELd)bayesnet::SPODELdexplicit
states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
version() (defined in bayesnet::SPODELd)bayesnet::SPODELdinlinestatic
Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
~SPODE()=default (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
~SPODELd()=default (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html new file mode 100644 index 0000000..a087449 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html @@ -0,0 +1,518 @@ + + + + + + + +BayesNet: bayesnet::SPODELd Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::SPODELd Class Reference
+
+
+
+Inheritance diagram for bayesnet::SPODELd:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for bayesnet::SPODELd:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SPODELd (int root)
 
SPODELdfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
 
SPODELdfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
 
SPODELdcommonFit (const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states)
 
std::vector< std::string > graph (const std::string &name="SPODE") const override
 
torch::Tensor predict (torch::Tensor &X) override
 
- Public Member Functions inherited from bayesnet::SPODE
 SPODE (int root)
 
- Public Member Functions inherited from bayesnet::Classifier
 Classifier (Network model)
 
Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
 
void addNodes ()
 
int getNumberOfNodes () const override
 
int getNumberOfEdges () const override
 
int getNumberOfStates () const override
 
int getClassNumStates () const override
 
std::vector< int > predict (std::vector< std::vector< int > > &X) override
 
torch::Tensor predict_proba (torch::Tensor &X) override
 
std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
 
status_t getStatus () const override
 
std::string getVersion () override
 
float score (torch::Tensor &X, torch::Tensor &y) override
 
float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
 
std::vector< std::string > show () const override
 
std::vector< std::string > topological_order () override
 
std::vector< std::string > getNotes () const override
 
std::string dump_cpt () const override
 
void setHyperparameters (const nlohmann::json &hyperparameters) override
 
- Public Member Functions inherited from bayesnet::BaseClassifier
std::vector< std::string > & getValidHyperparameters ()
 
- Public Member Functions inherited from bayesnet::Proposal
 Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
 
+ + + +

+Static Public Member Functions

static std::string version ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from bayesnet::SPODE
void buildModel (const torch::Tensor &weights) override
 
- Protected Member Functions inherited from bayesnet::Classifier
void checkFitParameters ()
 
void trainModel (const torch::Tensor &weights) override
 
void buildDataset (torch::Tensor &y)
 
- Protected Member Functions inherited from bayesnet::Proposal
void checkInput (const torch::Tensor &X, const torch::Tensor &y)
 
torch::Tensor prepareX (torch::Tensor &X)
 
map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
 
map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
 
- Protected Attributes inherited from bayesnet::Classifier
bool fitted
 
unsigned int m
 
unsigned int n
 
Network model
 
Metrics metrics
 
std::vector< std::string > features
 
std::string className
 
std::map< std::string, std::vector< int > > states
 
torch::Tensor dataset
 
status_t status = NORMAL
 
std::vector< std::string > notes
 
- Protected Attributes inherited from bayesnet::BaseClassifier
std::vector< std::string > validHyperparameters
 
- Protected Attributes inherited from bayesnet::Proposal
torch::Tensor Xf
 
torch::Tensor y
 
map< std::string, mdlp::CPPFImdlp * > discretizers
 
+

Detailed Description

+
+

Definition at line 13 of file SPODELd.h.

+

Constructor & Destructor Documentation

+ +

◆ SPODELd()

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::SPODELd::SPODELd (int root)
+
+explicit
+
+ +

Definition at line 10 of file SPODELd.cc.

+ +
+
+

Member Function Documentation

+ +

◆ commonFit()

+ +
+
+ + + + + + + + + + + + + + + + +
SPODELd & bayesnet::SPODELd::commonFit (const std::vector< std::string > & features,
const std::string & className,
map< std::string, std::vector< int > > & states )
+
+ +

Definition at line 29 of file SPODELd.cc.

+ +
+
+ +

◆ fit() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
SPODELd & bayesnet::SPODELd::fit (torch::Tensor & dataset,
const std::vector< std::string > & features,
const std::string & className,
map< std::string, std::vector< int > > & states )
+
+override
+
+ +

Definition at line 19 of file SPODELd.cc.

+ +
+
+ +

◆ fit() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
SPODELd & bayesnet::SPODELd::fit (torch::Tensor & X,
torch::Tensor & y,
const std::vector< std::string > & features,
const std::string & className,
map< std::string, std::vector< int > > & states )
+
+override
+
+ +

Definition at line 11 of file SPODELd.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > bayesnet::SPODELd::graph (const std::string & name = "SPODE") const
+
+overridevirtual
+
+ +

Reimplemented from bayesnet::SPODE.

+ +

Definition at line 46 of file SPODELd.cc.

+ +
+
+ +

◆ predict()

+ +
+
+ + + + + +
+ + + + + + + +
torch::Tensor bayesnet::SPODELd::predict (torch::Tensor & X)
+
+overridevirtual
+
+ +

Reimplemented from bayesnet::Classifier.

+ +

Definition at line 41 of file SPODELd.cc.

+ +
+
+ +

◆ version()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string bayesnet::SPODELd::version ()
+
+inlinestatic
+
+ +

Definition at line 22 of file SPODELd.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map new file mode 100644 index 0000000..9ca9e5f --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 new file mode 100644 index 0000000..a37512c --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 @@ -0,0 +1 @@ +53a8a1ce38ea1de9807975652116ea2e \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4de1b0f30cfe718af658d6b643e0f75701b07430 GIT binary patch literal 17423 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 + + + + + + + + + +
diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 new file mode 100644 index 0000000..a8f9b26 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 @@ -0,0 +1 @@ +c2a8d41159422d470d0010f0fdadea9c \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4949d442bd6dc2843783694666100276da2bd53b GIT binary patch literal 13621 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 B$$J0* literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html b/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html new file mode 100644 index 0000000..a44a2c8 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html @@ -0,0 +1,161 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::SPnDE Member List
+
+
+ +

This is the complete list of members for bayesnet::SPnDE, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPnDE)bayesnet::SPnDEprotectedvirtual
checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
graph(const std::string &name="SPnDE") const override (defined in bayesnet::SPnDE)bayesnet::SPnDEvirtual
m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
SPnDE(std::vector< int > parents) (defined in bayesnet::SPnDE)bayesnet::SPnDEexplicit
states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
~SPnDE()=default (defined in bayesnet::SPnDE)bayesnet::SPnDEvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e.html b/docs/manual/classbayesnet_1_1_s_pn_d_e.html new file mode 100644 index 0000000..a6f9ef0 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_pn_d_e.html @@ -0,0 +1,337 @@ + + + + + + + +BayesNet: bayesnet::SPnDE Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::SPnDE Class Reference
+
+
+
+Inheritance diagram for bayesnet::SPnDE:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for bayesnet::SPnDE:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SPnDE (std::vector< int > parents)
 
std::vector< std::string > graph (const std::string &name="SPnDE") const override
 
- Public Member Functions inherited from bayesnet::Classifier
 Classifier (Network model)
 
Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
 
void addNodes ()
 
int getNumberOfNodes () const override
 
int getNumberOfEdges () const override
 
int getNumberOfStates () const override
 
int getClassNumStates () const override
 
torch::Tensor predict (torch::Tensor &X) override
 
std::vector< int > predict (std::vector< std::vector< int > > &X) override
 
torch::Tensor predict_proba (torch::Tensor &X) override
 
std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
 
status_t getStatus () const override
 
std::string getVersion () override
 
float score (torch::Tensor &X, torch::Tensor &y) override
 
float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
 
std::vector< std::string > show () const override
 
std::vector< std::string > topological_order () override
 
std::vector< std::string > getNotes () const override
 
std::string dump_cpt () const override
 
void setHyperparameters (const nlohmann::json &hyperparameters) override
 
- Public Member Functions inherited from bayesnet::BaseClassifier
std::vector< std::string > & getValidHyperparameters ()
 
+ + + + + + + + + + +

+Protected Member Functions

void buildModel (const torch::Tensor &weights) override
 
- Protected Member Functions inherited from bayesnet::Classifier
void checkFitParameters ()
 
void trainModel (const torch::Tensor &weights) override
 
void buildDataset (torch::Tensor &y)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from bayesnet::Classifier
bool fitted
 
unsigned int m
 
unsigned int n
 
Network model
 
Metrics metrics
 
std::vector< std::string > features
 
std::string className
 
std::map< std::string, std::vector< int > > states
 
torch::Tensor dataset
 
status_t status = NORMAL
 
std::vector< std::string > notes
 
- Protected Attributes inherited from bayesnet::BaseClassifier
std::vector< std::string > validHyperparameters
 
+

Detailed Description

+
+

Definition at line 13 of file SPnDE.h.

+

Constructor & Destructor Documentation

+ +

◆ SPnDE()

+ +
+
+ + + + + +
+ + + + + + + +
bayesnet::SPnDE::SPnDE (std::vector< int > parents)
+
+explicit
+
+ +

Definition at line 11 of file SPnDE.cc.

+ +
+
+

Member Function Documentation

+ +

◆ buildModel()

+ +
+
+ + + + + +
+ + + + + + + +
void bayesnet::SPnDE::buildModel (const torch::Tensor & weights)
+
+overrideprotectedvirtual
+
+ +

Implements bayesnet::Classifier.

+ +

Definition at line 13 of file SPnDE.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > bayesnet::SPnDE::graph (const std::string & name = "SPnDE") const
+
+overridevirtual
+
+ +

Implements bayesnet::BaseClassifier.

+ +

Definition at line 33 of file SPnDE.cc.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map new file mode 100644 index 0000000..b7ecb8a --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 new file mode 100644 index 0000000..f1c4d74 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 @@ -0,0 +1 @@ +7823db61a54dfd03f5143e755580cf6b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dd12c33e638b822edb013487aba053715a63f755 GIT binary patch literal 11430 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 + + + + + +
diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 new file mode 100644 index 0000000..fa18236 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 @@ -0,0 +1 @@ +e4818c342999832413f96ae3dcaa8265 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3c32bb165a9c1315a3447d0ab5f36690078322c6 GIT binary patch literal 7614 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 literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_t_a_n-members.html b/docs/manual/classbayesnet_1_1_t_a_n-members.html new file mode 100644 index 0000000..62e924e --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n-members.html @@ -0,0 +1,161 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::TAN Member List
+
+
+ +

This is the complete list of members for bayesnet::TAN, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
buildModel(const torch::Tensor &weights) override (defined in bayesnet::TAN)bayesnet::TANprotectedvirtual
checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
graph(const std::string &name="TAN") const override (defined in bayesnet::TAN)bayesnet::TANvirtual
m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
TAN() (defined in bayesnet::TAN)bayesnet::TAN
topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
~TAN()=default (defined in bayesnet::TAN)bayesnet::TANvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n.html b/docs/manual/classbayesnet_1_1_t_a_n.html new file mode 100644 index 0000000..3fc7816 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n.html @@ -0,0 +1,329 @@ + + + + + + + +BayesNet: bayesnet::TAN Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::TAN Class Reference
+
+
+
+Inheritance diagram for bayesnet::TAN:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for bayesnet::TAN:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

std::vector< std::string > graph (const std::string &name="TAN") const override
 
- Public Member Functions inherited from bayesnet::Classifier
 Classifier (Network model)
 
Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
 
void addNodes ()
 
int getNumberOfNodes () const override
 
int getNumberOfEdges () const override
 
int getNumberOfStates () const override
 
int getClassNumStates () const override
 
torch::Tensor predict (torch::Tensor &X) override
 
std::vector< int > predict (std::vector< std::vector< int > > &X) override
 
torch::Tensor predict_proba (torch::Tensor &X) override
 
std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
 
status_t getStatus () const override
 
std::string getVersion () override
 
float score (torch::Tensor &X, torch::Tensor &y) override
 
float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
 
std::vector< std::string > show () const override
 
std::vector< std::string > topological_order () override
 
std::vector< std::string > getNotes () const override
 
std::string dump_cpt () const override
 
void setHyperparameters (const nlohmann::json &hyperparameters) override
 
- Public Member Functions inherited from bayesnet::BaseClassifier
std::vector< std::string > & getValidHyperparameters ()
 
+ + + + + + + + + + +

+Protected Member Functions

void buildModel (const torch::Tensor &weights) override
 
- Protected Member Functions inherited from bayesnet::Classifier
void checkFitParameters ()
 
void trainModel (const torch::Tensor &weights) override
 
void buildDataset (torch::Tensor &y)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from bayesnet::Classifier
bool fitted
 
unsigned int m
 
unsigned int n
 
Network model
 
Metrics metrics
 
std::vector< std::string > features
 
std::string className
 
std::map< std::string, std::vector< int > > states
 
torch::Tensor dataset
 
status_t status = NORMAL
 
std::vector< std::string > notes
 
- Protected Attributes inherited from bayesnet::BaseClassifier
std::vector< std::string > validHyperparameters
 
+

Detailed Description

+
+

Definition at line 11 of file TAN.h.

+

Constructor & Destructor Documentation

+ +

◆ TAN()

+ +
+
+ + + + + + + +
bayesnet::TAN::TAN ()
+
+ +

Definition at line 10 of file TAN.cc.

+ +
+
+

Member Function Documentation

+ +

◆ buildModel()

+ +
+
+ + + + + +
+ + + + + + + +
void bayesnet::TAN::buildModel (const torch::Tensor & weights)
+
+overrideprotectedvirtual
+
+ +

Implements bayesnet::Classifier.

+ +

Definition at line 12 of file TAN.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > bayesnet::TAN::graph (const std::string & name = "TAN") const
+
+overridevirtual
+
+ +

Implements bayesnet::BaseClassifier.

+ +

Definition at line 41 of file TAN.cc.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map new file mode 100644 index 0000000..0684efa --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 new file mode 100644 index 0000000..4c81c1b --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 @@ -0,0 +1 @@ +c02f97b240585f440b3a51e1b4f83e2c \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..da93f4c674d6b1533f9b5db053b62e4f85826c25 GIT binary patch literal 11120 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 + + + + + + + +
diff --git a/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 new file mode 100644 index 0000000..05ec32e --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 @@ -0,0 +1 @@ +056d4ba29c060a1c0448fe1ba10ac890 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png b/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bced2e0c1d9b95fa2d120fd5a83798bf65581f5f GIT binary patch literal 9898 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 BJI??B literal 0 HcmV?d00001 diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html b/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html new file mode 100644 index 0000000..6b481dc --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html @@ -0,0 +1,174 @@ + + + + + + + +BayesNet: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet::TANLd Member List
+
+
+ +

This is the complete list of members for bayesnet::TANLd, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
buildModel(const torch::Tensor &weights) override (defined in bayesnet::TAN)bayesnet::TANprotectedvirtual
checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::TANLd)bayesnet::TANLd
fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
graph(const std::string &name="TAN") const override (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
predict(torch::Tensor &X) override (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
TAN() (defined in bayesnet::TAN)bayesnet::TAN
TANLd() (defined in bayesnet::TANLd)bayesnet::TANLd
topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
version() (defined in bayesnet::TANLd)bayesnet::TANLdinlinestatic
Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
~TAN()=default (defined in bayesnet::TAN)bayesnet::TANvirtual
~TANLd()=default (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld.html b/docs/manual/classbayesnet_1_1_t_a_n_ld.html new file mode 100644 index 0000000..2cbe980 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n_ld.html @@ -0,0 +1,432 @@ + + + + + + + +BayesNet: bayesnet::TANLd Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bayesnet::TANLd Class Reference
+
+
+
+Inheritance diagram for bayesnet::TANLd:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for bayesnet::TANLd:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TANLdfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
 
std::vector< std::string > graph (const std::string &name="TAN") const override
 
torch::Tensor predict (torch::Tensor &X) override
 
- Public Member Functions inherited from bayesnet::Classifier
 Classifier (Network model)
 
Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
 
Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
 
void addNodes ()
 
int getNumberOfNodes () const override
 
int getNumberOfEdges () const override
 
int getNumberOfStates () const override
 
int getClassNumStates () const override
 
std::vector< int > predict (std::vector< std::vector< int > > &X) override
 
torch::Tensor predict_proba (torch::Tensor &X) override
 
std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
 
status_t getStatus () const override
 
std::string getVersion () override
 
float score (torch::Tensor &X, torch::Tensor &y) override
 
float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
 
std::vector< std::string > show () const override
 
std::vector< std::string > topological_order () override
 
std::vector< std::string > getNotes () const override
 
std::string dump_cpt () const override
 
void setHyperparameters (const nlohmann::json &hyperparameters) override
 
- Public Member Functions inherited from bayesnet::BaseClassifier
std::vector< std::string > & getValidHyperparameters ()
 
- Public Member Functions inherited from bayesnet::Proposal
 Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
 
+ + + +

+Static Public Member Functions

static std::string version ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from bayesnet::TAN
void buildModel (const torch::Tensor &weights) override
 
- Protected Member Functions inherited from bayesnet::Classifier
void checkFitParameters ()
 
void trainModel (const torch::Tensor &weights) override
 
void buildDataset (torch::Tensor &y)
 
- Protected Member Functions inherited from bayesnet::Proposal
void checkInput (const torch::Tensor &X, const torch::Tensor &y)
 
torch::Tensor prepareX (torch::Tensor &X)
 
map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
 
map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
 
- Protected Attributes inherited from bayesnet::Classifier
bool fitted
 
unsigned int m
 
unsigned int n
 
Network model
 
Metrics metrics
 
std::vector< std::string > features
 
std::string className
 
std::map< std::string, std::vector< int > > states
 
torch::Tensor dataset
 
status_t status = NORMAL
 
std::vector< std::string > notes
 
- Protected Attributes inherited from bayesnet::BaseClassifier
std::vector< std::string > validHyperparameters
 
- Protected Attributes inherited from bayesnet::Proposal
torch::Tensor Xf
 
torch::Tensor y
 
map< std::string, mdlp::CPPFImdlp * > discretizers
 
+

Detailed Description

+
+

Definition at line 13 of file TANLd.h.

+

Constructor & Destructor Documentation

+ +

◆ TANLd()

+ +
+
+ + + + + + + +
bayesnet::TANLd::TANLd ()
+
+ +

Definition at line 10 of file TANLd.cc.

+ +
+
+

Member Function Documentation

+ +

◆ fit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
TANLd & bayesnet::TANLd::fit (torch::Tensor & X,
torch::Tensor & y,
const std::vector< std::string > & features,
const std::string & className,
map< std::string, std::vector< int > > & states )
+
+override
+
+ +

Definition at line 11 of file TANLd.cc.

+ +
+
+ +

◆ graph()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > bayesnet::TANLd::graph (const std::string & name = "TAN") const
+
+overridevirtual
+
+ +

Reimplemented from bayesnet::TAN.

+ +

Definition at line 32 of file TANLd.cc.

+ +
+
+ +

◆ predict()

+ +
+
+ + + + + +
+ + + + + + + +
torch::Tensor bayesnet::TANLd::predict (torch::Tensor & X)
+
+overridevirtual
+
+ +

Reimplemented from bayesnet::Classifier.

+ +

Definition at line 27 of file TANLd.cc.

+ +
+
+ +

◆ version()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string bayesnet::TANLd::version ()
+
+inlinestatic
+
+ +

Definition at line 21 of file TANLd.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.h
  • +
  • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.cc
  • +
+
+
+ + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map new file mode 100644 index 0000000..4d2ffb3 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 new file mode 100644 index 0000000..3e810b3 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 @@ -0,0 +1 @@ +52efa3ac9345f1a4c851d818a575585f \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..86f237556c2b514fa9a367d17c2c863273fe08b2 GIT binary patch literal 16530 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 + + + + + + + + + +
diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 new file mode 100644 index 0000000..f98e719 --- /dev/null +++ b/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 @@ -0,0 +1 @@ +acb57f33de9f26c8371c599af6ced955 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6a30308f5f8b30c89f6d7ceb265e6298ebff5637 GIT binary patch literal 12664 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 + + + + + + +BayesNet: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | E | K | N | P | S | T
+
+
+
A
+
A2DE (bayesnet)
AODE (bayesnet)
AODELd (bayesnet)
+
+
B
+
BaseClassifier (bayesnet)
Boost (bayesnet)
BoostA2DE (bayesnet)
BoostAODE (bayesnet)
+
+
C
+
Classifier (bayesnet)
+
+
E
+
Ensemble (bayesnet)
+
+
K
+
KDB (bayesnet)
KDBLd (bayesnet)
+
+
N
+
Network (bayesnet)
Node (bayesnet)
+
+
P
+
Proposal (bayesnet)
+
+
S
+
SPnDE (bayesnet)
SPODE (bayesnet)
SPODELd (bayesnet)
+
+
T
+
TAN (bayesnet)
TANLd (bayesnet)
+
+
+
+ + + + diff --git a/docs/manual/clipboard.js b/docs/manual/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/docs/manual/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/manual/closed.png b/docs/manual/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/manual/cookie.js b/docs/manual/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/manual/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html new file mode 100644 index 0000000..9824342 --- /dev/null +++ b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html @@ -0,0 +1,155 @@ + + + + + + + +BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ensembles Directory Reference
+
+
+
+Directory dependency graph for ensembles:
+
+
/Users/rmontanana/Code/BayesNet/bayesnet/ensembles
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 A2DE.cc
 
 A2DE.h
 
 AODE.cc
 
 AODE.h
 
 AODELd.cc
 
 AODELd.h
 
 Boost.cc
 
 Boost.h
 
 BoostA2DE.cc
 
 BoostA2DE.h
 
 BoostAODE.cc
 
 BoostAODE.h
 
 Ensemble.cc
 
 Ensemble.h
 
+
+
+ + + + diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js new file mode 100644 index 0000000..d44bdc7 --- /dev/null +++ b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js @@ -0,0 +1,17 @@ +var dir_2f68445c4ac4316280c650d0a13b2741 = +[ + [ "A2DE.cc", "_a2_d_e_8cc_source.html", null ], + [ "A2DE.h", "_a2_d_e_8h_source.html", null ], + [ "AODE.cc", "_a_o_d_e_8cc_source.html", null ], + [ "AODE.h", "_a_o_d_e_8h_source.html", null ], + [ "AODELd.cc", "_a_o_d_e_ld_8cc_source.html", null ], + [ "AODELd.h", "_a_o_d_e_ld_8h_source.html", null ], + [ "Boost.cc", "_boost_8cc_source.html", null ], + [ "Boost.h", "_boost_8h_source.html", null ], + [ "BoostA2DE.cc", "_boost_a2_d_e_8cc_source.html", null ], + [ "BoostA2DE.h", "_boost_a2_d_e_8h_source.html", null ], + [ "BoostAODE.cc", "_boost_a_o_d_e_8cc_source.html", null ], + [ "BoostAODE.h", "_boost_a_o_d_e_8h_source.html", null ], + [ "Ensemble.cc", "_ensemble_8cc_source.html", null ], + [ "Ensemble.h", "_ensemble_8h_source.html", null ] +]; \ No newline at end of file diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map new file mode 100644 index 0000000..b78928c --- /dev/null +++ b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 new file mode 100644 index 0000000..8dd543c --- /dev/null +++ b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 @@ -0,0 +1 @@ +6cc09d9126554d4a21b3538ccfb3d762 \ No newline at end of file diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3e6435e76d2f3f4ddf870498f4cf5159cf56c3 GIT binary patch literal 2616 zcmY*bcRU+f6i#_XDXra-J}n+?#j3`rP_4aHjM_6|6sZx^h&^i4#ty1R%#s=*ln$y$ zs`jYeAgXGFTFpy;@2~f}zkAL<_nz;&=iYPAmtuYNOXn#gYXJs}3aBfpq4^H?x|O9-YSHoTu3@5Fv5wE7w@xNi~YaR$QcQM{ajmHQ(}s7 zN_h*lClQHr;>+H0bB;2#v&~+XnEMb-i+_@hDwD&$jVbIztKTVN0(_2rll7Z zM&cW9b@}(LZVqXd4U58HFz;K+-3(sYu-)9M$Iu9ct+QTlSp;G5^5ws*i#nho)d#uz*CU zk2)AUW@c%b7gpQU#1+%?`A4p~x%nFPNd91h`h-}h>W#G3*Jm>~ub6PYNyhs>zb!A{ z5*nV?jm;`A$LCGqFv6}nfO}`UAP5Jp=4O7tuT`S-rSK7iRyt5`E#nNxTJb_;f>0sR zw>ZxuWq5XWFz{N`%Svy?1-0K1y;^fR4?n6gUD$K^Frc5>zu#wRDdYU`dYKl72;_ER z`0+jif9rbyt?Om2zF2U^-5BO0Sy?v*I^(CZzLyp9ad0AHeosU7bVa?O)2HYIofG{K zsao$!Mf&<@8?$4WcS5|z^Z;mSo57Q_(x$o6sl^-ED(>U|-|XE#%f=zGQ*?PEY(@sBKs@xWA@<>KLpk{wesRfBw~8 z`2cOa4N)3TAgBN#eksyOGUDXDEbbjI5v3 zB`uouGyMEM8?yJ~Yr$})OX3?itMZ!@<|myP>J7ofWaE+-gu>;%r)$H@{5*Vo7rFiU zhlV6qz7v_QN(M?~J1?&-l6&_D&*uvWhIo?YE}dt3a`0nF1zM4niD6}83=9kmd$kyT zQ{rZ@+didq-v(f78KtTZkX_A}r)5EV7Gw!fb45$Z>0sr;m@D;m!;Icqbq-WzTGh zo9l+8WNA*NcnmW$V@6(PZ_qriAS&vCOW#OYf}pfizVXtihkG;s1?3~lR=?jTA@aV{ zi9L=bwYAT%N!e3JQ*QfPwD`*-T#7+IfcEzGv&hi%Ox#=O2)!F(ku}K@U@+KjdnZ82 ztHFv~Q64dVgY7{XigxCE|5rnI1YlSp-D$?nmfWt)M4A;gO+Kvq>wUgYda0dg8WeE64KF=nW) z^=nip2@@Ol*R5+$KP+dbB!I042Zq3TZy0)<#Q#{|? zd(6(n*!Pt6u(32MF|oAQTa(>ic5!Lm0Rn*_9yfk9SA+B1RT={i{L|GHA+{wXbG2lQ zbb54XYHqIS)bn7xK0N1}G_7Z)O@GThLa%ICMpW^oy4P)fZW%Eg?s0o7anszw;_b=m z>d#3RV=ivF;kkiEK`i{iHAvWXW!(N`=w+lh74)`3)GF4~2uc$EPNEo#S`;?;qEsSZ zF%F?sF+NG-8X4X?Rbu_ZX4$UmV(l=Mk zHwm$N(VHgjF&*B5*@wgTYsIfiNH(q)HnE=@dx_DkBHuo>iaqU@7o~If1N%DL)VG5| zxyeUFr3s;GTequ0*-!YCO(@=$HZ}v(VBe9?3&Gyq?V2jdcza*RuHu4nRfL{wK|z5{ z(PaSvfhxHXDRpdXQT`#QZe&>TQB&^5fE%{B0I!NbJ0BeeHyza}u&|wTHCbo|*)%22 zOQVuX01gbt$3IU9O1+ADotvY;nDW3oHxp{%4=4jnq?cvu(!@fbguF6I8&aoI&6HJ&e= z&9S}JPBR2gaWS#36!HHk#i|!RC1rO#pR!sp%3R+mi=uqe8YI&JRhY^HttlXwF-M47 z<7mzhke>{6*-VB%~TdVIYKC~u{Pmo893A9V+cRw(_Umq*Hv2;3K@(tA4=&RMOr za<(2}@Tb!kI4q!_qhAFXr`1)SPGK9MG}()7wxq10BD?WnC2tHU^k7A&X|jix3cBLc zCpD8{G9(5^tJ>QSh8uOcwMqmB2Twkds>%9hs-ln3sao2d{Tj*zMiRi#bIc1F^rDgN z2mcWsn)K56VyFm1@i__YgscBoOBTNBA))@di5^v3sGHB@4`14;P5y!uaV#T*Gu Y7ybUL1C$4$OF@9HrjbVdeaGm30r?d&T>t<8 literal 0 HcmV?d00001 diff --git a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html new file mode 100644 index 0000000..be6d54d --- /dev/null +++ b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html @@ -0,0 +1,129 @@ + + + + + + + +BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bayesnet Directory Reference
+
+
+ + + + + + + + +

+Directories

 classifiers
 
 ensembles
 
 network
 
+ + + +

+Files

 BaseClassifier.h
 
+
+
+ + + + diff --git a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js new file mode 100644 index 0000000..4a6e185 --- /dev/null +++ b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js @@ -0,0 +1,7 @@ +var dir_40070fdff85d618b4d1d3ab4ac4f79bb = +[ + [ "classifiers", "dir_520a649ed2b1c3b658a695aeefe46a5a.html", "dir_520a649ed2b1c3b658a695aeefe46a5a" ], + [ "ensembles", "dir_2f68445c4ac4316280c650d0a13b2741.html", "dir_2f68445c4ac4316280c650d0a13b2741" ], + [ "network", "dir_efcd97b18bba957e8e278307db4f845a.html", "dir_efcd97b18bba957e8e278307db4f845a" ], + [ "BaseClassifier.h", "_base_classifier_8h_source.html", null ] +]; \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html new file mode 100644 index 0000000..65dc0cf --- /dev/null +++ b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html @@ -0,0 +1,163 @@ + + + + + + + +BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
classifiers Directory Reference
+
+
+
+Directory dependency graph for classifiers:
+
+
/Users/rmontanana/Code/BayesNet/bayesnet/classifiers
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 Classifier.cc
 
 Classifier.h
 
 KDB.cc
 
 KDB.h
 
 KDBLd.cc
 
 KDBLd.h
 
 Proposal.cc
 
 Proposal.h
 
 SPnDE.cc
 
 SPnDE.h
 
 SPODE.cc
 
 SPODE.h
 
 SPODELd.cc
 
 SPODELd.h
 
 TAN.cc
 
 TAN.h
 
 TANLd.cc
 
 TANLd.h
 
+
+
+ + + + diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js new file mode 100644 index 0000000..9cdb471 --- /dev/null +++ b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js @@ -0,0 +1,21 @@ +var dir_520a649ed2b1c3b658a695aeefe46a5a = +[ + [ "Classifier.cc", "_classifier_8cc_source.html", null ], + [ "Classifier.h", "_classifier_8h_source.html", null ], + [ "KDB.cc", "_k_d_b_8cc_source.html", null ], + [ "KDB.h", "_k_d_b_8h_source.html", null ], + [ "KDBLd.cc", "_k_d_b_ld_8cc_source.html", null ], + [ "KDBLd.h", "_k_d_b_ld_8h_source.html", null ], + [ "Proposal.cc", "_proposal_8cc_source.html", null ], + [ "Proposal.h", "_proposal_8h_source.html", null ], + [ "SPnDE.cc", "_s_pn_d_e_8cc_source.html", null ], + [ "SPnDE.h", "_s_pn_d_e_8h_source.html", null ], + [ "SPODE.cc", "_s_p_o_d_e_8cc_source.html", null ], + [ "SPODE.h", "_s_p_o_d_e_8h_source.html", null ], + [ "SPODELd.cc", "_s_p_o_d_e_ld_8cc_source.html", null ], + [ "SPODELd.h", "_s_p_o_d_e_ld_8h_source.html", null ], + [ "TAN.cc", "_t_a_n_8cc_source.html", null ], + [ "TAN.h", "_t_a_n_8h_source.html", null ], + [ "TANLd.cc", "_t_a_n_ld_8cc_source.html", null ], + [ "TANLd.h", "_t_a_n_ld_8h_source.html", null ] +]; \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map new file mode 100644 index 0000000..1ebf8c8 --- /dev/null +++ b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 new file mode 100644 index 0000000..0c97c91 --- /dev/null +++ b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 @@ -0,0 +1 @@ +ddf4d873601a2bc95e40d58d84328f38 \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bde0e7451b3386b5f9c0787686183853dbd0ba GIT binary patch literal 2868 zcmV-43(NG0P) zEydKJMd^rXm5$n#X{oAODvN|Enh;A{Gp%imBnS~(Bq6wwP44{RlS_J%o8{)-+?zh% zzjDtx@AJO7c|PYo=jJ`n1tEkGLI@#*5JCtcgb+dqA%qa(cTHu;-~j;vGc_7b4;_ar zkB^W4QQ8}(eO2j|6n*;i@mu=QrzhRqJxbjl9krLlix`qZ~@Z|6)KX9vcO z8G%~;2!J0BAEbNN4s`G0gGakoygzR?029ZL;+<)ewJ{0{3u*7(n&_wq0M4E{O;5kh zc)Gjb>f%WFl1192TJ}*moqRp$*2Nbuk2d`H;|bvDROal|oJ||o;nvm(R~JVH1@`6P z!v{KJ{-IZQ?xv?RW>hHOZ2!t=?^{)wMN(vCWua23IDg?XG5Zg5?(7*pTe$*&4;L?B z&fNJVT~6c3v7h;B>zAB8bDE&w5cWk!P*6|+K*G^@9_Kvf<(C6ds~<6PL@^2f@QaIDF`Pii(Q( zeA55@ep ziaUmvmk$7)J3hNb4jb_*uT2=u;2}X+T3XSw*NXtyHfx4WX4WMpKp<%>u#olZRs(SU{8{!zM-n_dlO4Ve$0W4S1;^_wV0l*UlYiG#b*&8`lvX z9Z6*L0Y$u=95qRai8Qyf!_l#YcDqKS;ZkxExp{ebd;4gogNi6CCOrN8qG7{^)U9i{ zS^LEC1ePxgCq6#D%70t4xTYxP;NV#5_ExQ&OT4zXcOW}Eo20~xY}l}t510JC)ON*p z5Wl5Tsc7fsUZpXX6%)`Vt*JAcThhu(OG{I zj@R@s%u=mAQ;4dQq!0=wzn(%EpUJPM5XPtXV}qIZA6I@6gD^087)VqzNeZDLNg)&@ zDTIO~g-|ey^%TOm%wj!-FfN%sYMJV&Phph*l1`uc25Hw*jnP%Dw{q16oLaUrXdiN> z5DG?JPhn+cO{W(+mw%urAvN`yQO~qSO^T+rw#<50o*=KRZ+C2Crx72rmgz$%$a)H) zAnPfFLakl6`+Mczvp4=dW5b%-SXViQTvG@IvrCEx53-pz=UsAh9~&foW@aYy=DbT@ zULNrDb})R&A|fNc%*d=JYRUG*2HYo<8+0 ze*NV?v~_hQGc$waq(p=CYf4NyDT<1UxOwwNg^n$&=9RA6Ri*87aBw8%z+vqJ#W!!> zVASYwczgRYAaEedKV7AWQ&!z9fV|vX@^W*_9g8V3*`$b#iN>w16MkJg;^XPcn$;^y zJ+7>pS5S8CDqZ`oUAu})D|^)HM+_d=pOh8f3&YhO`Ok+uR~bnHP~+O%c;#?4HAdm8x#`Pu?(x@uf$G#c{q^4Rv(mu%d$1t+JL zI_qee8k1a45wUjqH68;eKc*-l$0x% zOKjWx`Fh1gXK~G|?ceU<*RvPdwtXiJts4SpYgZlm;TRW_Qwbgx!ps>{$jyDMb6-V0 zU*qcBg-e{faEZ7hCt0>!dF@jj{TY)bfv2^s)~sGh^X7IXj?-21 zN>}Zws@Ao7UU@aHo>v|H8IwtV%MrZfR+FFq||*CRb1n0#`L%O+u{YJ zr{5tYbR?6fOeZrlqr|b*(VsDyWKsZ3dSfzU$4?|ZJ-tNvA_oUYGVeb-?MB6Xuc&!7 z`}TX-+1V4b|8S|btLoILQ|3Mwmo_Eh|8(k%_UAEUCopF01nujP&=CwA^opX!)o;hB zt3Oj@vPl78X=$aXXH}ZgYF-s9t9F$>b*-MKtHzZf`ZESuPaza!J%vy(>FGmMo~)-3 z24U1Q#p9eDP8?4#W|y^su^*%|YEoooX0Uu&xG}pFRUp%cP%z4w;{v@4YZZ zO>J!r-iKaEQM{hQ&D}%iaUD9A|KW}>9VWS+Lewm|rl@6V?RpAPvm_~mf+U4dkfaa_ zk`zKgug@t|D%Hv6&F$Sll~lZKcu-)7t~Prj4(!&oU)t-}e)+O+o$V_^ucU~Ji(3&F z7q?=@J5#jV0s;cUbhT+}W2y6YN!lB>y%0hOA%qY@2qA + + + + + + +BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
network Directory Reference
+
+
+
+Directory dependency graph for network:
+
+
/Users/rmontanana/Code/BayesNet/bayesnet/network
+ + + + +
+ + + + + + + + + + +

+Files

 Network.cc
 
 Network.h
 
 Node.cc
 
 Node.h
 
+
+
+ + + + diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js new file mode 100644 index 0000000..6c973b6 --- /dev/null +++ b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js @@ -0,0 +1,7 @@ +var dir_efcd97b18bba957e8e278307db4f845a = +[ + [ "Network.cc", "_network_8cc_source.html", null ], + [ "Network.h", "_network_8h_source.html", null ], + [ "Node.cc", "_node_8cc_source.html", null ], + [ "Node.h", "_node_8h_source.html", null ] +]; \ No newline at end of file diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map new file mode 100644 index 0000000..203b233 --- /dev/null +++ b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 new file mode 100644 index 0000000..25c4a94 --- /dev/null +++ b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 @@ -0,0 +1 @@ +12407aa49bded8b8b8761369fc40201b \ No newline at end of file diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..c421b297314d8f32d80f2f9a4c3cb23471361fb7 GIT binary patch literal 2778 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 Cp^;Gl literal 0 HcmV?d00001 diff --git a/docs/manual/doc.svg b/docs/manual/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/manual/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/manual/docd.svg b/docs/manual/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/manual/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/manual/doxygen.css b/docs/manual/doxygen.css new file mode 100644 index 0000000..209912c --- /dev/null +++ b/docs/manual/doxygen.css @@ -0,0 +1,2244 @@ +/* The standard CSS for doxygen 1.11.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/docs/manual/doxygen.svg b/docs/manual/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docs/manual/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/doxygen_crawl.html b/docs/manual/doxygen_crawl.html new file mode 100644 index 0000000..4a3b72e --- /dev/null +++ b/docs/manual/doxygen_crawl.html @@ -0,0 +1,163 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/dynsections.js b/docs/manual/dynsections.js new file mode 100644 index 0000000..8985f42 --- /dev/null +++ b/docs/manual/dynsections.js @@ -0,0 +1,205 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ +$(function() { + $('.code,.codeRef').each(function() { + $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; + $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); + }); +}); diff --git a/docs/manual/files.html b/docs/manual/files.html new file mode 100644 index 0000000..00e561b --- /dev/null +++ b/docs/manual/files.html @@ -0,0 +1,158 @@ + + + + + + + +BayesNet: File List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  bayesnet
  classifiers
 Classifier.cc
 Classifier.h
 KDB.cc
 KDB.h
 KDBLd.cc
 KDBLd.h
 Proposal.cc
 Proposal.h
 SPnDE.cc
 SPnDE.h
 SPODE.cc
 SPODE.h
 SPODELd.cc
 SPODELd.h
 TAN.cc
 TAN.h
 TANLd.cc
 TANLd.h
  ensembles
 A2DE.cc
 A2DE.h
 AODE.cc
 AODE.h
 AODELd.cc
 AODELd.h
 Boost.cc
 Boost.h
 BoostA2DE.cc
 BoostA2DE.h
 BoostAODE.cc
 BoostAODE.h
 Ensemble.cc
 Ensemble.h
  network
 Network.cc
 Network.h
 Node.cc
 Node.h
 BaseClassifier.h
+
+
+
+ + + + diff --git a/docs/manual/files_dup.js b/docs/manual/files_dup.js new file mode 100644 index 0000000..3a9b985 --- /dev/null +++ b/docs/manual/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "bayesnet", "dir_40070fdff85d618b4d1d3ab4ac4f79bb.html", "dir_40070fdff85d618b4d1d3ab4ac4f79bb" ] +]; \ No newline at end of file diff --git a/docs/manual/folderclosed.svg b/docs/manual/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/manual/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/manual/folderclosedd.svg b/docs/manual/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/manual/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/manual/folderopen.svg b/docs/manual/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/manual/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/manual/folderopend.svg b/docs/manual/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/manual/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/manual/graph_legend.html b/docs/manual/graph_legend.html new file mode 100644 index 0000000..46efc2c --- /dev/null +++ b/docs/manual/graph_legend.html @@ -0,0 +1,173 @@ + + + + + + + +BayesNet: Graph Legend + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docs/manual/graph_legend.md5 b/docs/manual/graph_legend.md5 new file mode 100644 index 0000000..da515da --- /dev/null +++ b/docs/manual/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/docs/manual/graph_legend.png b/docs/manual/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..9f80d23298cbb09d18a9d504e2f1a7d4f0a17cb3 GIT binary patch literal 22891 zcmb5W1yq$$7cEK%f`o*0mq>S~Qc8m$BHi8HAl-tblypgVBi*Ugp}V{D?c@L7JKlKr zzWc@-j)8~cIp4SU+H1`<*Ier}R8d|E?FHcr7#J9|5AVg5VPN30!0Ra_MDX(k(=r

9>#sC`%WH4X)TW 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 literal 0 HcmV?d00001 diff --git a/docs/manual/hierarchy.html b/docs/manual/hierarchy.html new file mode 100644 index 0000000..5b7dbca --- /dev/null +++ b/docs/manual/hierarchy.html @@ -0,0 +1,142 @@ + + + + + + + +BayesNet: Class Hierarchy + + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+ +
+ + + + diff --git a/docs/manual/hierarchy.js b/docs/manual/hierarchy.js new file mode 100644 index 0000000..5202a5c --- /dev/null +++ b/docs/manual/hierarchy.js @@ -0,0 +1,34 @@ +var hierarchy = +[ + [ "bayesnet::BaseClassifier", "classbayesnet_1_1_base_classifier.html", [ + [ "bayesnet::Classifier", "classbayesnet_1_1_classifier.html", [ + [ "bayesnet::Ensemble", "classbayesnet_1_1_ensemble.html", [ + [ "bayesnet::A2DE", "classbayesnet_1_1_a2_d_e.html", null ], + [ "bayesnet::AODE", "classbayesnet_1_1_a_o_d_e.html", null ], + [ "bayesnet::AODELd", "classbayesnet_1_1_a_o_d_e_ld.html", null ], + [ "bayesnet::Boost", "classbayesnet_1_1_boost.html", [ + [ "bayesnet::BoostA2DE", "classbayesnet_1_1_boost_a2_d_e.html", null ], + [ "bayesnet::BoostAODE", "classbayesnet_1_1_boost_a_o_d_e.html", null ] + ] ] + ] ], + [ "bayesnet::KDB", "classbayesnet_1_1_k_d_b.html", [ + [ "bayesnet::KDBLd", "classbayesnet_1_1_k_d_b_ld.html", null ] + ] ], + [ "bayesnet::SPODE", "classbayesnet_1_1_s_p_o_d_e.html", [ + [ "bayesnet::SPODELd", "classbayesnet_1_1_s_p_o_d_e_ld.html", null ] + ] ], + [ "bayesnet::SPnDE", "classbayesnet_1_1_s_pn_d_e.html", null ], + [ "bayesnet::TAN", "classbayesnet_1_1_t_a_n.html", [ + [ "bayesnet::TANLd", "classbayesnet_1_1_t_a_n_ld.html", null ] + ] ] + ] ] + ] ], + [ "bayesnet::Network", "classbayesnet_1_1_network.html", null ], + [ "bayesnet::Node", "classbayesnet_1_1_node.html", null ], + [ "bayesnet::Proposal", "classbayesnet_1_1_proposal.html", [ + [ "bayesnet::AODELd", "classbayesnet_1_1_a_o_d_e_ld.html", null ], + [ "bayesnet::KDBLd", "classbayesnet_1_1_k_d_b_ld.html", null ], + [ "bayesnet::SPODELd", "classbayesnet_1_1_s_p_o_d_e_ld.html", null ], + [ "bayesnet::TANLd", "classbayesnet_1_1_t_a_n_ld.html", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/manual/index.html b/docs/manual/index.html new file mode 100644 index 0000000..fe22924 --- /dev/null +++ b/docs/manual/index.html @@ -0,0 +1,114 @@ + + + + + + + +BayesNet: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BayesNet Documentation
+
+
+ +
+
+ + + + diff --git a/docs/manual/inherit_graph_0.map b/docs/manual/inherit_graph_0.map new file mode 100644 index 0000000..d8b0322 --- /dev/null +++ b/docs/manual/inherit_graph_0.map @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/inherit_graph_0.md5 b/docs/manual/inherit_graph_0.md5 new file mode 100644 index 0000000..6b3e630 --- /dev/null +++ b/docs/manual/inherit_graph_0.md5 @@ -0,0 +1 @@ +1a07b7de87ded37a8a348204931028c0 \ No newline at end of file diff --git a/docs/manual/inherit_graph_0.png b/docs/manual/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e413ba93aa4d7569bc4b68876f171b64ca2aa0e8 GIT binary patch literal 44422 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

$m`d; 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

%EN?MJq!uD5qampET`;>AHOfvigEA(d3=LUu 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 literal 0 HcmV?d00001 diff --git a/docs/manual/inherit_graph_1.map b/docs/manual/inherit_graph_1.map new file mode 100644 index 0000000..c129322 --- /dev/null +++ b/docs/manual/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/inherit_graph_1.md5 b/docs/manual/inherit_graph_1.md5 new file mode 100644 index 0000000..ed1e310 --- /dev/null +++ b/docs/manual/inherit_graph_1.md5 @@ -0,0 +1 @@ +65918d135faed85a5d80296a021b4cf3 \ No newline at end of file diff --git a/docs/manual/inherit_graph_1.png b/docs/manual/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f36291a4f90163f7ced46ce456a2073db38fb6bc GIT binary patch literal 2310 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 literal 0 HcmV?d00001 diff --git a/docs/manual/inherit_graph_2.map b/docs/manual/inherit_graph_2.map new file mode 100644 index 0000000..6791d6e --- /dev/null +++ b/docs/manual/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/manual/inherit_graph_2.md5 b/docs/manual/inherit_graph_2.md5 new file mode 100644 index 0000000..81f8e6e --- /dev/null +++ b/docs/manual/inherit_graph_2.md5 @@ -0,0 +1 @@ +75f111cd5e54a47afb7579e7ca08bb41 \ No newline at end of file diff --git a/docs/manual/inherit_graph_2.png b/docs/manual/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9b58930bddb0bf915ff834db73eee358fa311888 GIT binary patch literal 2036 zcmVFq zNF>@S5{YjAd$t4?kpBR<^K)TB;NxUxXD_%LfrTSBHg?jw_+R!Ru*e93FENC`ml#6e zOAI0KC590A6622pfA{Vkl9H0YqLP7$rUcEY@o}ZtO+qdWTXN>&(d=wWK|EaZU z`QyO5ySs7o=FR!=vZ#1?c%Z7PYS!yBGcyqv7l)@$pBmL4Ja~Xdj~>m*Lv?jEYHDic zw0E}5>qq*)zyQ8{`7-I;=g*%(^0zfL8V&S%{e-$+uSa)x_mum_#>Sx0XlAY1-`@|N zPWM~h+}+&~8ykz!(a~wwkwjZt8-|C6C!HS}8k%zNRQEqu<|Xja(NU;WD#&Cq*x1-$ z-@bj&YPA4>%F0T(xw*mB)fFM`g(YJdcwiM z0d{tFNJ&XCe8Z%sro!3T8LqCbaCCG;b#*m>AMM4;$_iJmT!B<7g`J%pwr}5#fq{W( zH8*bDh@PGv?A^N;H*VYj0HmjMkapn!V4o?TsCw6wHjU0ogT+_^(rTU+XMI+A2%WhJew ztT;S8%&%X+QZASC^y$+a92{g@TN|C7otd4T&F1E2+Su4oqtQ^O)A8K7bKJUhD@n4s zxtRbM78XXWR?FJjTFPWH-nw;bT1}E%v0?=)Dk=>3RZ&sFjEsya$0jBwtg5Qw-Me>b zVPV16)>e{aR8$mIDiukxv$K;DiG*ckWhBY2t}Z$|JM+?|OB@;+qC_HLT3Q-48Vz%D zatMHliHS3MoeeQDF^rCm4qLFmTUuHSwUZ}L(%ajcV`F1{{rWZadOdr3dRSFeMSFXD z=H=yaczBprR#t|G9336a!-o%(By)3fX=i6gwOUQBR!gl`%jD!_?%cVPZ{NP9nVA{W z)6@Ck!w2g1dVc%%%_#8khfk8Bp`ko=>eRHFJUR62s}XrKJU0trqLouQ$4m zr>7^@u3d|qoE%)ZZ~;k4N$~LSKx%3#LPJ9h>y|HHZunXvkwB-@O{@8*WMyT+-QC^L zj>c(iZH14Ik5NsbP@t%&2oE1Vgs-o!(cJjjh4eZvf%o?IVq|0lrlzI=4sGKHm&V3M6c-mG zJUkq2ZEdizv4N|rD*&LRqy#N3Ert;M{QO{UZjOY61Vlzg8iLxfV+Yh~HS+TEKoafk z?Fb4ALP0?R>gwtc5)y*`{(eZMQUnDB&FU08ohAU7nwlC8cK}dRQ-l2c{3*x35*HT- zCnqP|yLZn}+r4`?UcP*Zva&J&KYkM^FE2-UcsPQCgYoLsD-;$Mf+QY4evJD1`dN9M zSLV{gSFc{ppr9biWHO4yVn#+rQm4~#WMqVXetwinrBo;sjEIO}OiT>raydIYJ4upB zNl662H*ek;>E`9-(Za%lD_5?hsi`TWqN4cy`*)6xj?&lHmu6;W^z!nei;D}dUAso| zpB_Hm(@8QSB7%vDiPLJ5ZcGwA#}{<(*b)7aQZ6B83d4=2g= z^mLk-n9#+=g;rKpjE#-u$jAsuGA%8QVzHQVxtwd(tYKtip5x8gtfIbyuH0Aos&wX zkV>VK&Q0fat}NQillJy@#K*_u=+UDH4h~){8%vIP{R#galu9LPYik$l@=F%s_2?2q z2z-el1ir)&{x5xrF(GiVSlpr4>kI4Z>K4O~z&s)ri#ujsB_JRmARr*{H}F5M@Tq0W S8KN8j0000 + + + + + + +BayesNet: Class Hierarchy + + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
BayesNet 1.0.5 +
+
Bayesian Network Classifiers using libtorch from scratch
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+
+
+ + + + diff --git a/docs/manual/jquery.js b/docs/manual/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/docs/manual/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/manual/logo_small.png b/docs/manual/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..33030fb11384d32caec8eaba448fd38584424a07 GIT binary patch literal 10855 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'+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+''; + } + result+=''; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/manual/menudata.js b/docs/manual/menudata.js new file mode 100644 index 0000000..1cdd58f --- /dev/null +++ b/docs/manual/menudata.js @@ -0,0 +1,32 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/manual/minus.svg b/docs/manual/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/manual/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/manual/minusd.svg b/docs/manual/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/manual/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/manual/nav_f.png b/docs/manual/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/manual/nav_fd.png b/docs/manual/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docs/manual/nav_g.png b/docs/manual/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docs/manual/navtree.css b/docs/manual/navtree.css new file mode 100644 index 0000000..69211d4 --- /dev/null +++ b/docs/manual/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/manual/navtree.js b/docs/manual/navtree.js new file mode 100644 index 0000000..9027ce6 --- /dev/null +++ b/docs/manual/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/docs/manual/plusd.svg b/docs/manual/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/manual/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/manual/resize.js b/docs/manual/resize.js new file mode 100644 index 0000000..7d8cdc7 --- /dev/null +++ b/docs/manual/resize.js @@ -0,0 +1,145 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/manual/search/all_0.js b/docs/manual/search/all_0.js new file mode 100644 index 0000000..dc433d2 --- /dev/null +++ b/docs/manual/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['a2de_0',['A2DE',['../classbayesnet_1_1_a2_d_e.html',1,'bayesnet']]], + ['aode_1',['AODE',['../classbayesnet_1_1_a_o_d_e.html',1,'bayesnet']]], + ['aodeld_2',['AODELd',['../classbayesnet_1_1_a_o_d_e_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_1.js b/docs/manual/search/all_1.js new file mode 100644 index 0000000..52180aa --- /dev/null +++ b/docs/manual/search/all_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['baseclassifier_0',['BaseClassifier',['../classbayesnet_1_1_base_classifier.html',1,'bayesnet']]], + ['boost_1',['Boost',['../classbayesnet_1_1_boost.html',1,'bayesnet']]], + ['boosta2de_2',['BoostA2DE',['../classbayesnet_1_1_boost_a2_d_e.html',1,'bayesnet']]], + ['boostaode_3',['BoostAODE',['../classbayesnet_1_1_boost_a_o_d_e.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_2.js b/docs/manual/search/all_2.js new file mode 100644 index 0000000..6aed91c --- /dev/null +++ b/docs/manual/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifier_0',['Classifier',['../classbayesnet_1_1_classifier.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_3.js b/docs/manual/search/all_3.js new file mode 100644 index 0000000..f513172 --- /dev/null +++ b/docs/manual/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ensemble_0',['Ensemble',['../classbayesnet_1_1_ensemble.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_4.js b/docs/manual/search/all_4.js new file mode 100644 index 0000000..721cf82 --- /dev/null +++ b/docs/manual/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kdb_0',['KDB',['../classbayesnet_1_1_k_d_b.html',1,'bayesnet']]], + ['kdbld_1',['KDBLd',['../classbayesnet_1_1_k_d_b_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_5.js b/docs/manual/search/all_5.js new file mode 100644 index 0000000..5efa2bd --- /dev/null +++ b/docs/manual/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['network_0',['Network',['../classbayesnet_1_1_network.html',1,'bayesnet']]], + ['node_1',['Node',['../classbayesnet_1_1_node.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_6.js b/docs/manual/search/all_6.js new file mode 100644 index 0000000..4e9c1ce --- /dev/null +++ b/docs/manual/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['proposal_0',['Proposal',['../classbayesnet_1_1_proposal.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_7.js b/docs/manual/search/all_7.js new file mode 100644 index 0000000..3c7da60 --- /dev/null +++ b/docs/manual/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['spnde_0',['SPnDE',['../classbayesnet_1_1_s_pn_d_e.html',1,'bayesnet']]], + ['spode_1',['SPODE',['../classbayesnet_1_1_s_p_o_d_e.html',1,'bayesnet']]], + ['spodeld_2',['SPODELd',['../classbayesnet_1_1_s_p_o_d_e_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/all_8.js b/docs/manual/search/all_8.js new file mode 100644 index 0000000..59e0076 --- /dev/null +++ b/docs/manual/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tan_0',['TAN',['../classbayesnet_1_1_t_a_n.html',1,'bayesnet']]], + ['tanld_1',['TANLd',['../classbayesnet_1_1_t_a_n_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_0.js b/docs/manual/search/classes_0.js new file mode 100644 index 0000000..dc433d2 --- /dev/null +++ b/docs/manual/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['a2de_0',['A2DE',['../classbayesnet_1_1_a2_d_e.html',1,'bayesnet']]], + ['aode_1',['AODE',['../classbayesnet_1_1_a_o_d_e.html',1,'bayesnet']]], + ['aodeld_2',['AODELd',['../classbayesnet_1_1_a_o_d_e_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_1.js b/docs/manual/search/classes_1.js new file mode 100644 index 0000000..52180aa --- /dev/null +++ b/docs/manual/search/classes_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['baseclassifier_0',['BaseClassifier',['../classbayesnet_1_1_base_classifier.html',1,'bayesnet']]], + ['boost_1',['Boost',['../classbayesnet_1_1_boost.html',1,'bayesnet']]], + ['boosta2de_2',['BoostA2DE',['../classbayesnet_1_1_boost_a2_d_e.html',1,'bayesnet']]], + ['boostaode_3',['BoostAODE',['../classbayesnet_1_1_boost_a_o_d_e.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_2.js b/docs/manual/search/classes_2.js new file mode 100644 index 0000000..6aed91c --- /dev/null +++ b/docs/manual/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifier_0',['Classifier',['../classbayesnet_1_1_classifier.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_3.js b/docs/manual/search/classes_3.js new file mode 100644 index 0000000..f513172 --- /dev/null +++ b/docs/manual/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ensemble_0',['Ensemble',['../classbayesnet_1_1_ensemble.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_4.js b/docs/manual/search/classes_4.js new file mode 100644 index 0000000..721cf82 --- /dev/null +++ b/docs/manual/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kdb_0',['KDB',['../classbayesnet_1_1_k_d_b.html',1,'bayesnet']]], + ['kdbld_1',['KDBLd',['../classbayesnet_1_1_k_d_b_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_5.js b/docs/manual/search/classes_5.js new file mode 100644 index 0000000..5efa2bd --- /dev/null +++ b/docs/manual/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['network_0',['Network',['../classbayesnet_1_1_network.html',1,'bayesnet']]], + ['node_1',['Node',['../classbayesnet_1_1_node.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_6.js b/docs/manual/search/classes_6.js new file mode 100644 index 0000000..4e9c1ce --- /dev/null +++ b/docs/manual/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['proposal_0',['Proposal',['../classbayesnet_1_1_proposal.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_7.js b/docs/manual/search/classes_7.js new file mode 100644 index 0000000..3c7da60 --- /dev/null +++ b/docs/manual/search/classes_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['spnde_0',['SPnDE',['../classbayesnet_1_1_s_pn_d_e.html',1,'bayesnet']]], + ['spode_1',['SPODE',['../classbayesnet_1_1_s_p_o_d_e.html',1,'bayesnet']]], + ['spodeld_2',['SPODELd',['../classbayesnet_1_1_s_p_o_d_e_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/classes_8.js b/docs/manual/search/classes_8.js new file mode 100644 index 0000000..59e0076 --- /dev/null +++ b/docs/manual/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tan_0',['TAN',['../classbayesnet_1_1_t_a_n.html',1,'bayesnet']]], + ['tanld_1',['TANLd',['../classbayesnet_1_1_t_a_n_ld.html',1,'bayesnet']]] +]; diff --git a/docs/manual/search/close.svg b/docs/manual/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/docs/manual/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docs/manual/search/mag.svg b/docs/manual/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/docs/manual/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/manual/search/mag_d.svg b/docs/manual/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/manual/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/manual/search/mag_sel.svg b/docs/manual/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/docs/manual/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/manual/search/mag_seld.svg b/docs/manual/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/manual/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/manual/search/search.css b/docs/manual/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/docs/manual/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/manual/search/search.js b/docs/manual/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/docs/manual/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/manual/splitbard.png b/docs/manual/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docs/manual/sync_off.png b/docs/manual/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/manual/sync_on.png b/docs/manual/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/manual/tab_a.png b/docs/manual/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/manual/tab_ad.png b/docs/manual/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docs/manual/tab_s.png b/docs/manual/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/manual/tab_sd.png b/docs/manual/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docs/manual/tabs.css b/docs/manual/tabs.css new file mode 100644 index 0000000..fe4854a --- /dev/null +++ b/docs/manual/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file From d43be278211a366ca3ddc7c678bf6d66d7b95e34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 22 May 2024 10:17:49 +0200 Subject: [PATCH 14/21] Remove manual and doc pages --- CMakeLists.txt | 16 +- docs/{Doxyfile => Doxyfile.in} | 0 docs/man3/bayesnet_A2DE.3 | 257 -- docs/man3/bayesnet_AODE.3 | 257 -- docs/man3/bayesnet_AODELd.3 | 296 --- docs/man3/bayesnet_BaseClassifier.3 | 116 - docs/man3/bayesnet_Boost.3 | 369 --- docs/man3/bayesnet_BoostA2DE.3 | 316 --- docs/man3/bayesnet_BoostAODE.3 | 316 --- docs/man3/bayesnet_Classifier.3 | 360 --- docs/man3/bayesnet_Ensemble.3 | 348 --- docs/man3/bayesnet_KDB.3 | 201 -- docs/man3/bayesnet_KDBLd.3 | 254 -- docs/man3/bayesnet_Network.3 | 223 -- docs/man3/bayesnet_Node.3 | 135 - docs/man3/bayesnet_Proposal.3 | 95 - docs/man3/bayesnet_SPODE.3 | 195 -- docs/man3/bayesnet_SPODELd.3 | 268 -- docs/man3/bayesnet_SPnDE.3 | 193 -- docs/man3/bayesnet_TAN.3 | 192 -- docs/man3/bayesnet_TANLd.3 | 244 -- docs/manual/_a2_d_e_8cc_source.html | 154 -- docs/manual/_a2_d_e_8h_source.html | 140 - docs/manual/_a_o_d_e_8cc_source.html | 152 -- docs/manual/_a_o_d_e_8h_source.html | 140 - docs/manual/_a_o_d_e_ld_8cc_source.html | 161 -- docs/manual/_a_o_d_e_ld_8h_source.html | 144 -- docs/manual/_base_classifier_8h_source.html | 162 -- docs/manual/_boost_8cc_source.html | 360 --- docs/manual/_boost_8h_source.html | 170 -- docs/manual/_boost_a2_d_e_8cc_source.html | 281 --- docs/manual/_boost_a2_d_e_8h_source.html | 143 -- docs/manual/_boost_a_o_d_e_8cc_source.html | 275 -- docs/manual/_boost_a_o_d_e_8h_source.html | 144 -- docs/manual/_classifier_8cc_source.html | 308 --- docs/manual/_classifier_8h_source.html | 184 -- docs/manual/_ensemble_8cc_source.html | 336 --- docs/manual/_ensemble_8h_source.html | 171 -- docs/manual/_k_d_b_8cc_source.html | 225 -- docs/manual/_k_d_b_8h_source.html | 145 -- docs/manual/_k_d_b_ld_8cc_source.html | 149 -- docs/manual/_k_d_b_ld_8h_source.html | 143 -- docs/manual/_network_8cc_source.html | 543 ---- docs/manual/_network_8h_source.html | 186 -- docs/manual/_node_8cc_source.html | 254 -- docs/manual/_node_8h_source.html | 159 -- docs/manual/_proposal_8cc_source.html | 243 -- docs/manual/_proposal_8h_source.html | 155 -- docs/manual/_s_p_o_d_e_8cc_source.html | 145 -- docs/manual/_s_p_o_d_e_8h_source.html | 141 -- docs/manual/_s_p_o_d_e_ld_8cc_source.html | 164 -- docs/manual/_s_p_o_d_e_ld_8h_source.html | 144 -- docs/manual/_s_pn_d_e_8cc_source.html | 152 -- docs/manual/_s_pn_d_e_8h_source.html | 144 -- docs/manual/_t_a_n_8cc_source.html | 159 -- docs/manual/_t_a_n_8h_source.html | 139 - docs/manual/_t_a_n_ld_8cc_source.html | 150 -- docs/manual/_t_a_n_ld_8h_source.html | 143 -- docs/manual/annotated.html | 137 - docs/manual/annotated_dup.js | 24 - docs/manual/bc_s.png | Bin 676 -> 0 bytes docs/manual/bc_sd.png | Bin 635 -> 0 bytes .../classbayesnet_1_1_a2_d_e-members.html | 174 -- docs/manual/classbayesnet_1_1_a2_d_e.html | 420 --- .../classbayesnet_1_1_a2_d_e__coll__graph.map | 11 - .../classbayesnet_1_1_a2_d_e__coll__graph.md5 | 1 - .../classbayesnet_1_1_a2_d_e__coll__graph.png | Bin 13836 -> 0 bytes ...assbayesnet_1_1_a2_d_e__inherit__graph.map | 9 - ...assbayesnet_1_1_a2_d_e__inherit__graph.md5 | 1 - ...assbayesnet_1_1_a2_d_e__inherit__graph.png | Bin 9888 -> 0 bytes .../classbayesnet_1_1_a_o_d_e-members.html | 174 -- docs/manual/classbayesnet_1_1_a_o_d_e.html | 420 --- ...classbayesnet_1_1_a_o_d_e__coll__graph.map | 11 - ...classbayesnet_1_1_a_o_d_e__coll__graph.md5 | 1 - ...classbayesnet_1_1_a_o_d_e__coll__graph.png | Bin 13955 -> 0 bytes ...ssbayesnet_1_1_a_o_d_e__inherit__graph.map | 9 - ...ssbayesnet_1_1_a_o_d_e__inherit__graph.md5 | 1 - ...ssbayesnet_1_1_a_o_d_e__inherit__graph.png | Bin 10014 -> 0 bytes .../classbayesnet_1_1_a_o_d_e_ld-members.html | 184 -- docs/manual/classbayesnet_1_1_a_o_d_e_ld.html | 464 ---- ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.map | 13 - ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 | 1 - ...ssbayesnet_1_1_a_o_d_e_ld__coll__graph.png | Bin 16871 -> 0 bytes ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.map | 11 - ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 | 1 - ...ayesnet_1_1_a_o_d_e_ld__inherit__graph.png | Bin 13060 -> 0 bytes ...sbayesnet_1_1_base_classifier-members.html | 142 -- .../classbayesnet_1_1_base_classifier.html | 299 --- ...et_1_1_base_classifier__inherit__graph.map | 33 - ...et_1_1_base_classifier__inherit__graph.md5 | 1 - ...et_1_1_base_classifier__inherit__graph.png | Bin 43173 -> 0 bytes .../classbayesnet_1_1_boost-members.html | 191 -- docs/manual/classbayesnet_1_1_boost.html | 845 ------- .../classbayesnet_1_1_boost__coll__graph.map | 11 - .../classbayesnet_1_1_boost__coll__graph.md5 | 1 - .../classbayesnet_1_1_boost__coll__graph.png | Bin 13587 -> 0 bytes ...lassbayesnet_1_1_boost__inherit__graph.map | 13 - ...lassbayesnet_1_1_boost__inherit__graph.md5 | 1 - ...lassbayesnet_1_1_boost__inherit__graph.png | Bin 15507 -> 0 bytes ...lassbayesnet_1_1_boost_a2_d_e-members.html | 193 -- .../classbayesnet_1_1_boost_a2_d_e.html | 417 --- ...bayesnet_1_1_boost_a2_d_e__coll__graph.map | 13 - ...bayesnet_1_1_boost_a2_d_e__coll__graph.md5 | 1 - ...bayesnet_1_1_boost_a2_d_e__coll__graph.png | Bin 16762 -> 0 bytes ...esnet_1_1_boost_a2_d_e__inherit__graph.map | 11 - ...esnet_1_1_boost_a2_d_e__inherit__graph.md5 | 1 - ...esnet_1_1_boost_a2_d_e__inherit__graph.png | Bin 12635 -> 0 bytes ...assbayesnet_1_1_boost_a_o_d_e-members.html | 193 -- .../classbayesnet_1_1_boost_a_o_d_e.html | 417 --- ...ayesnet_1_1_boost_a_o_d_e__coll__graph.map | 13 - ...ayesnet_1_1_boost_a_o_d_e__coll__graph.md5 | 1 - ...ayesnet_1_1_boost_a_o_d_e__coll__graph.png | Bin 16880 -> 0 bytes ...snet_1_1_boost_a_o_d_e__inherit__graph.map | 11 - ...snet_1_1_boost_a_o_d_e__inherit__graph.md5 | 1 - ...snet_1_1_boost_a_o_d_e__inherit__graph.png | Bin 12761 -> 0 bytes .../classbayesnet_1_1_classifier-members.html | 159 -- docs/manual/classbayesnet_1_1_classifier.html | 1348 ---------- ...ssbayesnet_1_1_classifier__coll__graph.map | 7 - ...ssbayesnet_1_1_classifier__coll__graph.md5 | 1 - ...ssbayesnet_1_1_classifier__coll__graph.png | Bin 8752 -> 0 bytes ...ayesnet_1_1_classifier__inherit__graph.map | 33 - ...ayesnet_1_1_classifier__inherit__graph.md5 | 1 - ...ayesnet_1_1_classifier__inherit__graph.png | Bin 43117 -> 0 bytes .../classbayesnet_1_1_ensemble-members.html | 172 -- docs/manual/classbayesnet_1_1_ensemble.html | 1007 -------- ...lassbayesnet_1_1_ensemble__coll__graph.map | 9 - ...lassbayesnet_1_1_ensemble__coll__graph.md5 | 1 - ...lassbayesnet_1_1_ensemble__coll__graph.png | Bin 11121 -> 0 bytes ...sbayesnet_1_1_ensemble__inherit__graph.map | 19 - ...sbayesnet_1_1_ensemble__inherit__graph.md5 | 1 - ...sbayesnet_1_1_ensemble__inherit__graph.png | Bin 22170 -> 0 bytes .../classbayesnet_1_1_k_d_b-members.html | 161 -- docs/manual/classbayesnet_1_1_k_d_b.html | 372 --- .../classbayesnet_1_1_k_d_b__coll__graph.map | 9 - .../classbayesnet_1_1_k_d_b__coll__graph.md5 | 1 - .../classbayesnet_1_1_k_d_b__coll__graph.png | Bin 11240 -> 0 bytes ...lassbayesnet_1_1_k_d_b__inherit__graph.map | 9 - ...lassbayesnet_1_1_k_d_b__inherit__graph.md5 | 1 - ...lassbayesnet_1_1_k_d_b__inherit__graph.png | Bin 10088 -> 0 bytes .../classbayesnet_1_1_k_d_b_ld-members.html | 174 -- docs/manual/classbayesnet_1_1_k_d_b_ld.html | 445 ---- ...lassbayesnet_1_1_k_d_b_ld__coll__graph.map | 13 - ...lassbayesnet_1_1_k_d_b_ld__coll__graph.md5 | 1 - ...lassbayesnet_1_1_k_d_b_ld__coll__graph.png | Bin 16788 -> 0 bytes ...sbayesnet_1_1_k_d_b_ld__inherit__graph.map | 11 - ...sbayesnet_1_1_k_d_b_ld__inherit__graph.md5 | 1 - ...sbayesnet_1_1_k_d_b_ld__inherit__graph.png | Bin 12914 -> 0 bytes .../classbayesnet_1_1_network-members.html | 146 -- docs/manual/classbayesnet_1_1_network.html | 840 ------ .../classbayesnet_1_1_node-members.html | 132 - docs/manual/classbayesnet_1_1_node.html | 488 ---- .../classbayesnet_1_1_proposal-members.html | 125 - docs/manual/classbayesnet_1_1_proposal.html | 414 --- ...sbayesnet_1_1_proposal__inherit__graph.map | 11 - ...sbayesnet_1_1_proposal__inherit__graph.md5 | 1 - ...sbayesnet_1_1_proposal__inherit__graph.png | Bin 11225 -> 0 bytes .../classbayesnet_1_1_s_p_o_d_e-members.html | 161 -- docs/manual/classbayesnet_1_1_s_p_o_d_e.html | 339 --- ...assbayesnet_1_1_s_p_o_d_e__coll__graph.map | 9 - ...assbayesnet_1_1_s_p_o_d_e__coll__graph.md5 | 1 - ...assbayesnet_1_1_s_p_o_d_e__coll__graph.png | Bin 11682 -> 0 bytes ...bayesnet_1_1_s_p_o_d_e__inherit__graph.map | 9 - ...bayesnet_1_1_s_p_o_d_e__inherit__graph.md5 | 1 - ...bayesnet_1_1_s_p_o_d_e__inherit__graph.png | Bin 10920 -> 0 bytes ...lassbayesnet_1_1_s_p_o_d_e_ld-members.html | 176 -- .../classbayesnet_1_1_s_p_o_d_e_ld.html | 518 ---- ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.map | 13 - ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 | 1 - ...bayesnet_1_1_s_p_o_d_e_ld__coll__graph.png | Bin 17423 -> 0 bytes ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.map | 11 - ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 | 1 - ...esnet_1_1_s_p_o_d_e_ld__inherit__graph.png | Bin 13621 -> 0 bytes .../classbayesnet_1_1_s_pn_d_e-members.html | 161 -- docs/manual/classbayesnet_1_1_s_pn_d_e.html | 337 --- ...lassbayesnet_1_1_s_pn_d_e__coll__graph.map | 9 - ...lassbayesnet_1_1_s_pn_d_e__coll__graph.md5 | 1 - ...lassbayesnet_1_1_s_pn_d_e__coll__graph.png | Bin 11430 -> 0 bytes ...sbayesnet_1_1_s_pn_d_e__inherit__graph.map | 7 - ...sbayesnet_1_1_s_pn_d_e__inherit__graph.md5 | 1 - ...sbayesnet_1_1_s_pn_d_e__inherit__graph.png | Bin 7614 -> 0 bytes .../classbayesnet_1_1_t_a_n-members.html | 161 -- docs/manual/classbayesnet_1_1_t_a_n.html | 329 --- .../classbayesnet_1_1_t_a_n__coll__graph.map | 9 - .../classbayesnet_1_1_t_a_n__coll__graph.md5 | 1 - .../classbayesnet_1_1_t_a_n__coll__graph.png | Bin 11120 -> 0 bytes ...lassbayesnet_1_1_t_a_n__inherit__graph.map | 9 - ...lassbayesnet_1_1_t_a_n__inherit__graph.md5 | 1 - ...lassbayesnet_1_1_t_a_n__inherit__graph.png | Bin 9898 -> 0 bytes .../classbayesnet_1_1_t_a_n_ld-members.html | 174 -- docs/manual/classbayesnet_1_1_t_a_n_ld.html | 432 ---- ...lassbayesnet_1_1_t_a_n_ld__coll__graph.map | 13 - ...lassbayesnet_1_1_t_a_n_ld__coll__graph.md5 | 1 - ...lassbayesnet_1_1_t_a_n_ld__coll__graph.png | Bin 16530 -> 0 bytes ...sbayesnet_1_1_t_a_n_ld__inherit__graph.map | 11 - ...sbayesnet_1_1_t_a_n_ld__inherit__graph.md5 | 1 - ...sbayesnet_1_1_t_a_n_ld__inherit__graph.png | Bin 12664 -> 0 bytes docs/manual/classes.html | 143 -- docs/manual/clipboard.js | 61 - docs/manual/closed.png | Bin 132 -> 0 bytes docs/manual/cookie.js | 58 - .../dir_2f68445c4ac4316280c650d0a13b2741.html | 155 -- .../dir_2f68445c4ac4316280c650d0a13b2741.js | 17 - ...r_2f68445c4ac4316280c650d0a13b2741_dep.map | 4 - ...r_2f68445c4ac4316280c650d0a13b2741_dep.md5 | 1 - ...r_2f68445c4ac4316280c650d0a13b2741_dep.png | Bin 2616 -> 0 bytes .../dir_40070fdff85d618b4d1d3ab4ac4f79bb.html | 129 - .../dir_40070fdff85d618b4d1d3ab4ac4f79bb.js | 7 - .../dir_520a649ed2b1c3b658a695aeefe46a5a.html | 163 -- .../dir_520a649ed2b1c3b658a695aeefe46a5a.js | 21 - ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.map | 4 - ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 | 1 - ...r_520a649ed2b1c3b658a695aeefe46a5a_dep.png | Bin 2868 -> 0 bytes .../dir_efcd97b18bba957e8e278307db4f845a.html | 135 - .../dir_efcd97b18bba957e8e278307db4f845a.js | 7 - ...r_efcd97b18bba957e8e278307db4f845a_dep.map | 4 - ...r_efcd97b18bba957e8e278307db4f845a_dep.md5 | 1 - ...r_efcd97b18bba957e8e278307db4f845a_dep.png | Bin 2778 -> 0 bytes docs/manual/doc.svg | 12 - docs/manual/docd.svg | 12 - docs/manual/doxygen.css | 2244 ----------------- docs/manual/doxygen.svg | 28 - docs/manual/doxygen_crawl.html | 163 -- docs/manual/dynsections.js | 205 -- docs/manual/files.html | 158 -- docs/manual/files_dup.js | 4 - docs/manual/folderclosed.svg | 11 - docs/manual/folderclosedd.svg | 11 - docs/manual/folderopen.svg | 17 - docs/manual/folderopend.svg | 12 - docs/manual/graph_legend.html | 173 -- docs/manual/graph_legend.md5 | 1 - docs/manual/graph_legend.png | Bin 22891 -> 0 bytes docs/manual/hierarchy.html | 142 -- docs/manual/hierarchy.js | 34 - docs/manual/index.html | 114 - docs/manual/inherit_graph_0.map | 38 - docs/manual/inherit_graph_0.md5 | 1 - docs/manual/inherit_graph_0.png | Bin 44422 -> 0 bytes docs/manual/inherit_graph_1.map | 3 - docs/manual/inherit_graph_1.md5 | 1 - docs/manual/inherit_graph_1.png | Bin 2310 -> 0 bytes docs/manual/inherit_graph_2.map | 3 - docs/manual/inherit_graph_2.md5 | 1 - docs/manual/inherit_graph_2.png | Bin 2036 -> 0 bytes docs/manual/inherits.html | 167 -- docs/manual/jquery.js | 34 - docs/manual/logo_small.png | Bin 10855 -> 0 bytes docs/manual/menu.js | 134 - docs/manual/menudata.js | 32 - docs/manual/minus.svg | 8 - docs/manual/minusd.svg | 8 - docs/manual/nav_f.png | Bin 153 -> 0 bytes docs/manual/nav_fd.png | Bin 169 -> 0 bytes docs/manual/nav_g.png | Bin 95 -> 0 bytes docs/manual/nav_h.png | Bin 98 -> 0 bytes docs/manual/nav_hd.png | Bin 114 -> 0 bytes docs/manual/navtree.css | 149 -- docs/manual/navtree.js | 483 ---- docs/manual/navtreedata.js | 45 - docs/manual/navtreeindex0.js | 69 - docs/manual/open.png | Bin 123 -> 0 bytes docs/manual/plus.svg | 9 - docs/manual/plusd.svg | 9 - docs/manual/resize.js | 145 -- docs/manual/search/all_0.js | 6 - docs/manual/search/all_1.js | 7 - docs/manual/search/all_2.js | 4 - docs/manual/search/all_3.js | 4 - docs/manual/search/all_4.js | 5 - docs/manual/search/all_5.js | 5 - docs/manual/search/all_6.js | 4 - docs/manual/search/all_7.js | 6 - docs/manual/search/all_8.js | 5 - docs/manual/search/classes_0.js | 6 - docs/manual/search/classes_1.js | 7 - docs/manual/search/classes_2.js | 4 - docs/manual/search/classes_3.js | 4 - docs/manual/search/classes_4.js | 5 - docs/manual/search/classes_5.js | 5 - docs/manual/search/classes_6.js | 4 - docs/manual/search/classes_7.js | 6 - docs/manual/search/classes_8.js | 5 - docs/manual/search/close.svg | 18 - docs/manual/search/mag.svg | 24 - docs/manual/search/mag_d.svg | 24 - docs/manual/search/mag_sel.svg | 31 - docs/manual/search/mag_seld.svg | 31 - docs/manual/search/search.css | 291 --- docs/manual/search/search.js | 694 ----- docs/manual/search/searchdata.js | 18 - docs/manual/splitbar.png | Bin 314 -> 0 bytes docs/manual/splitbard.png | Bin 282 -> 0 bytes docs/manual/sync_off.png | Bin 853 -> 0 bytes docs/manual/sync_on.png | Bin 845 -> 0 bytes docs/manual/tab_a.png | Bin 142 -> 0 bytes docs/manual/tab_ad.png | Bin 135 -> 0 bytes docs/manual/tab_b.png | Bin 169 -> 0 bytes docs/manual/tab_bd.png | Bin 173 -> 0 bytes docs/manual/tab_h.png | Bin 177 -> 0 bytes docs/manual/tab_hd.png | Bin 180 -> 0 bytes docs/manual/tab_s.png | Bin 184 -> 0 bytes docs/manual/tab_sd.png | Bin 188 -> 0 bytes docs/manual/tabs.css | 1 - 303 files changed, 15 insertions(+), 32446 deletions(-) rename docs/{Doxyfile => Doxyfile.in} (100%) delete mode 100644 docs/man3/bayesnet_A2DE.3 delete mode 100644 docs/man3/bayesnet_AODE.3 delete mode 100644 docs/man3/bayesnet_AODELd.3 delete mode 100644 docs/man3/bayesnet_BaseClassifier.3 delete mode 100644 docs/man3/bayesnet_Boost.3 delete mode 100644 docs/man3/bayesnet_BoostA2DE.3 delete mode 100644 docs/man3/bayesnet_BoostAODE.3 delete mode 100644 docs/man3/bayesnet_Classifier.3 delete mode 100644 docs/man3/bayesnet_Ensemble.3 delete mode 100644 docs/man3/bayesnet_KDB.3 delete mode 100644 docs/man3/bayesnet_KDBLd.3 delete mode 100644 docs/man3/bayesnet_Network.3 delete mode 100644 docs/man3/bayesnet_Node.3 delete mode 100644 docs/man3/bayesnet_Proposal.3 delete mode 100644 docs/man3/bayesnet_SPODE.3 delete mode 100644 docs/man3/bayesnet_SPODELd.3 delete mode 100644 docs/man3/bayesnet_SPnDE.3 delete mode 100644 docs/man3/bayesnet_TAN.3 delete mode 100644 docs/man3/bayesnet_TANLd.3 delete mode 100644 docs/manual/_a2_d_e_8cc_source.html delete mode 100644 docs/manual/_a2_d_e_8h_source.html delete mode 100644 docs/manual/_a_o_d_e_8cc_source.html delete mode 100644 docs/manual/_a_o_d_e_8h_source.html delete mode 100644 docs/manual/_a_o_d_e_ld_8cc_source.html delete mode 100644 docs/manual/_a_o_d_e_ld_8h_source.html delete mode 100644 docs/manual/_base_classifier_8h_source.html delete mode 100644 docs/manual/_boost_8cc_source.html delete mode 100644 docs/manual/_boost_8h_source.html delete mode 100644 docs/manual/_boost_a2_d_e_8cc_source.html delete mode 100644 docs/manual/_boost_a2_d_e_8h_source.html delete mode 100644 docs/manual/_boost_a_o_d_e_8cc_source.html delete mode 100644 docs/manual/_boost_a_o_d_e_8h_source.html delete mode 100644 docs/manual/_classifier_8cc_source.html delete mode 100644 docs/manual/_classifier_8h_source.html delete mode 100644 docs/manual/_ensemble_8cc_source.html delete mode 100644 docs/manual/_ensemble_8h_source.html delete mode 100644 docs/manual/_k_d_b_8cc_source.html delete mode 100644 docs/manual/_k_d_b_8h_source.html delete mode 100644 docs/manual/_k_d_b_ld_8cc_source.html delete mode 100644 docs/manual/_k_d_b_ld_8h_source.html delete mode 100644 docs/manual/_network_8cc_source.html delete mode 100644 docs/manual/_network_8h_source.html delete mode 100644 docs/manual/_node_8cc_source.html delete mode 100644 docs/manual/_node_8h_source.html delete mode 100644 docs/manual/_proposal_8cc_source.html delete mode 100644 docs/manual/_proposal_8h_source.html delete mode 100644 docs/manual/_s_p_o_d_e_8cc_source.html delete mode 100644 docs/manual/_s_p_o_d_e_8h_source.html delete mode 100644 docs/manual/_s_p_o_d_e_ld_8cc_source.html delete mode 100644 docs/manual/_s_p_o_d_e_ld_8h_source.html delete mode 100644 docs/manual/_s_pn_d_e_8cc_source.html delete mode 100644 docs/manual/_s_pn_d_e_8h_source.html delete mode 100644 docs/manual/_t_a_n_8cc_source.html delete mode 100644 docs/manual/_t_a_n_8h_source.html delete mode 100644 docs/manual/_t_a_n_ld_8cc_source.html delete mode 100644 docs/manual/_t_a_n_ld_8h_source.html delete mode 100644 docs/manual/annotated.html delete mode 100644 docs/manual/annotated_dup.js delete mode 100644 docs/manual/bc_s.png delete mode 100644 docs/manual/bc_sd.png delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld-members.html delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld.html delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_base_classifier-members.html delete mode 100644 docs/manual/classbayesnet_1_1_base_classifier.html delete mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost-members.html delete mode 100644 docs/manual/classbayesnet_1_1_boost.html delete mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_classifier-members.html delete mode 100644 docs/manual/classbayesnet_1_1_classifier.html delete mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_classifier__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_classifier__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_ensemble-members.html delete mode 100644 docs/manual/classbayesnet_1_1_ensemble.html delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_ensemble__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b-members.html delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b.html delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld-members.html delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld.html delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_network-members.html delete mode 100644 docs/manual/classbayesnet_1_1_network.html delete mode 100644 docs/manual/classbayesnet_1_1_node-members.html delete mode 100644 docs/manual/classbayesnet_1_1_node.html delete mode 100644 docs/manual/classbayesnet_1_1_proposal-members.html delete mode 100644 docs/manual/classbayesnet_1_1_proposal.html delete mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_proposal__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e-members.html delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e.html delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n-members.html delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n.html delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld-members.html delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld.html delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.map delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 delete mode 100644 docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png delete mode 100644 docs/manual/classes.html delete mode 100644 docs/manual/clipboard.js delete mode 100644 docs/manual/closed.png delete mode 100644 docs/manual/cookie.js delete mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html delete mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js delete mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map delete mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 delete mode 100644 docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png delete mode 100644 docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html delete mode 100644 docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js delete mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html delete mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js delete mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map delete mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 delete mode 100644 docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png delete mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a.html delete mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js delete mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map delete mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 delete mode 100644 docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png delete mode 100644 docs/manual/doc.svg delete mode 100644 docs/manual/docd.svg delete mode 100644 docs/manual/doxygen.css delete mode 100644 docs/manual/doxygen.svg delete mode 100644 docs/manual/doxygen_crawl.html delete mode 100644 docs/manual/dynsections.js delete mode 100644 docs/manual/files.html delete mode 100644 docs/manual/files_dup.js delete mode 100644 docs/manual/folderclosed.svg delete mode 100644 docs/manual/folderclosedd.svg delete mode 100644 docs/manual/folderopen.svg delete mode 100644 docs/manual/folderopend.svg delete mode 100644 docs/manual/graph_legend.html delete mode 100644 docs/manual/graph_legend.md5 delete mode 100644 docs/manual/graph_legend.png delete mode 100644 docs/manual/hierarchy.html delete mode 100644 docs/manual/hierarchy.js delete mode 100644 docs/manual/index.html delete mode 100644 docs/manual/inherit_graph_0.map delete mode 100644 docs/manual/inherit_graph_0.md5 delete mode 100644 docs/manual/inherit_graph_0.png delete mode 100644 docs/manual/inherit_graph_1.map delete mode 100644 docs/manual/inherit_graph_1.md5 delete mode 100644 docs/manual/inherit_graph_1.png delete mode 100644 docs/manual/inherit_graph_2.map delete mode 100644 docs/manual/inherit_graph_2.md5 delete mode 100644 docs/manual/inherit_graph_2.png delete mode 100644 docs/manual/inherits.html delete mode 100644 docs/manual/jquery.js delete mode 100644 docs/manual/logo_small.png delete mode 100644 docs/manual/menu.js delete mode 100644 docs/manual/menudata.js delete mode 100644 docs/manual/minus.svg delete mode 100644 docs/manual/minusd.svg delete mode 100644 docs/manual/nav_f.png delete mode 100644 docs/manual/nav_fd.png delete mode 100644 docs/manual/nav_g.png delete mode 100644 docs/manual/nav_h.png delete mode 100644 docs/manual/nav_hd.png delete mode 100644 docs/manual/navtree.css delete mode 100644 docs/manual/navtree.js delete mode 100644 docs/manual/navtreedata.js delete mode 100644 docs/manual/navtreeindex0.js delete mode 100644 docs/manual/open.png delete mode 100644 docs/manual/plus.svg delete mode 100644 docs/manual/plusd.svg delete mode 100644 docs/manual/resize.js delete mode 100644 docs/manual/search/all_0.js delete mode 100644 docs/manual/search/all_1.js delete mode 100644 docs/manual/search/all_2.js delete mode 100644 docs/manual/search/all_3.js delete mode 100644 docs/manual/search/all_4.js delete mode 100644 docs/manual/search/all_5.js delete mode 100644 docs/manual/search/all_6.js delete mode 100644 docs/manual/search/all_7.js delete mode 100644 docs/manual/search/all_8.js delete mode 100644 docs/manual/search/classes_0.js delete mode 100644 docs/manual/search/classes_1.js delete mode 100644 docs/manual/search/classes_2.js delete mode 100644 docs/manual/search/classes_3.js delete mode 100644 docs/manual/search/classes_4.js delete mode 100644 docs/manual/search/classes_5.js delete mode 100644 docs/manual/search/classes_6.js delete mode 100644 docs/manual/search/classes_7.js delete mode 100644 docs/manual/search/classes_8.js delete mode 100644 docs/manual/search/close.svg delete mode 100644 docs/manual/search/mag.svg delete mode 100644 docs/manual/search/mag_d.svg delete mode 100644 docs/manual/search/mag_sel.svg delete mode 100644 docs/manual/search/mag_seld.svg delete mode 100644 docs/manual/search/search.css delete mode 100644 docs/manual/search/search.js delete mode 100644 docs/manual/search/searchdata.js delete mode 100644 docs/manual/splitbar.png delete mode 100644 docs/manual/splitbard.png delete mode 100644 docs/manual/sync_off.png delete mode 100644 docs/manual/sync_on.png delete mode 100644 docs/manual/tab_a.png delete mode 100644 docs/manual/tab_ad.png delete mode 100644 docs/manual/tab_b.png delete mode 100644 docs/manual/tab_bd.png delete mode 100644 docs/manual/tab_h.png delete mode 100644 docs/manual/tab_hd.png delete mode 100644 docs/manual/tab_s.png delete mode 100644 docs/manual/tab_sd.png delete mode 100644 docs/manual/tabs.css diff --git a/CMakeLists.txt b/CMakeLists.txt index 152447e..ffaabd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,4 +88,18 @@ install(TARGETS BayesNet LIBRARY DESTINATION lib CONFIGURATIONS Release) install(DIRECTORY bayesnet/ DESTINATION include/bayesnet FILES_MATCHING CONFIGURATIONS Release PATTERN "*.h") -install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DESTINATION include/bayesnet CONFIGURATIONS Release) \ No newline at end of file +install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DESTINATION include/bayesnet CONFIGURATIONS Release) + +# Documentation +# ------------- +set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in) +set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +configure_file(${doxyfile_in} ${doxyfile} @ONLY) + +# doc build only target, target is not in default build, so it must be +# triggered explicitly +add_custom_target(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + COMMENT "Generating API documentation with Doxygen" + VERBATIM) \ No newline at end of file diff --git a/docs/Doxyfile b/docs/Doxyfile.in similarity index 100% rename from docs/Doxyfile rename to docs/Doxyfile.in diff --git a/docs/man3/bayesnet_A2DE.3 b/docs/man3/bayesnet_A2DE.3 deleted file mode 100644 index 6a1593f..0000000 --- a/docs/man3/bayesnet_A2DE.3 +++ /dev/null @@ -1,257 +0,0 @@ -.TH "bayesnet::A2DE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::A2DE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Ensemble\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBA2DE\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title='A2DE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB12\fP of file \fBA2DE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::A2DE::A2DE (bool predict_voting = \fRfalse\fP)" - -.PP -Definition at line \fB10\fP of file \fBA2DE\&.cc\fP\&. -.SS "virtual bayesnet::A2DE::~A2DE ()\fR [inline]\fP, \fR [virtual]\fP" - -.PP -Definition at line \fB15\fP of file \fBA2DE\&.h\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::A2DE::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB23\fP of file \fBA2DE\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::A2DE::graph (const std::string & title = \fR'A2DE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB36\fP of file \fBA2DE\&.cc\fP\&. -.SS "void bayesnet::A2DE::setHyperparameters (const nlohmann::json & hyperparameters)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB14\fP of file \fBA2DE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_AODE.3 b/docs/man3/bayesnet_AODE.3 deleted file mode 100644 index 6894802..0000000 --- a/docs/man3/bayesnet_AODE.3 +++ /dev/null @@ -1,257 +0,0 @@ -.TH "bayesnet::AODE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::AODE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Ensemble\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBAODE\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title='AODE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB12\fP of file \fBAODE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::AODE::AODE (bool predict_voting = \fRfalse\fP)" - -.PP -Definition at line \fB10\fP of file \fBAODE\&.cc\fP\&. -.SS "virtual bayesnet::AODE::~AODE ()\fR [inline]\fP, \fR [virtual]\fP" - -.PP -Definition at line \fB15\fP of file \fBAODE\&.h\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::AODE::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB24\fP of file \fBAODE\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::AODE::graph (const std::string & title = \fR'AODE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB34\fP of file \fBAODE\&.cc\fP\&. -.SS "void bayesnet::AODE::setHyperparameters (const nlohmann::json & hyperparameters)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB15\fP of file \fBAODE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_AODELd.3 b/docs/man3/bayesnet_AODELd.3 deleted file mode 100644 index a684913..0000000 --- a/docs/man3/bayesnet_AODELd.3 +++ /dev/null @@ -1,296 +0,0 @@ -.TH "bayesnet::AODELd" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::AODELd -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Ensemble\fP, and \fBbayesnet::Proposal\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBAODELd\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "\fBAODELd\fP & \fBfit\fP (torch::Tensor &X_, torch::Tensor &y_, const std::vector< std::string > &features_, const std::string &className_, map< std::string, std::vector< int > > &states_) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='AODELd') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "\fBProposal\fP (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "void \fBcheckInput\fP (const torch::Tensor &X, const torch::Tensor &y)" -.br -.ti -1c -.RI "torch::Tensor \fBprepareX\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBlocalDiscretizationProposal\fP (const map< std::string, std::vector< int > > &states, \fBNetwork\fP &model)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBfit_local_discretization\fP (const torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBXf\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy\fP" -.br -.ti -1c -.RI "map< std::string, mdlp::CPPFImdlp * > \fBdiscretizers\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB14\fP of file \fBAODELd\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::AODELd::AODELd (bool predict_voting = \fRtrue\fP)" - -.PP -Definition at line \fB10\fP of file \fBAODELd\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::AODELd::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB28\fP of file \fBAODELd\&.cc\fP\&. -.SS "\fBAODELd\fP & bayesnet::AODELd::fit (torch::Tensor & X_, torch::Tensor & y_, const std::vector< std::string > & features_, const std::string & className_, map< std::string, std::vector< int > > & states_)\fR [override]\fP" - -.PP -Definition at line \fB13\fP of file \fBAODELd\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::AODELd::graph (const std::string & name = \fR'AODELd'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB43\fP of file \fBAODELd\&.cc\fP\&. -.SS "void bayesnet::AODELd::trainModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB37\fP of file \fBAODELd\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_BaseClassifier.3 b/docs/man3/bayesnet_BaseClassifier.3 deleted file mode 100644 index 44f3411..0000000 --- a/docs/man3/bayesnet_BaseClassifier.3 +++ /dev/null @@ -1,116 +0,0 @@ -.TH "bayesnet::BaseClassifier" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::BaseClassifier -.SH SYNOPSIS -.br -.PP -.PP -Inherited by \fBbayesnet::Classifier\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "virtual \fBBaseClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0" -.br -.ti -1c -.RI "virtual \fBBaseClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0" -.br -.ti -1c -.RI "virtual \fBBaseClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0" -.br -.ti -1c -.RI "virtual \fBBaseClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights)=0" -.br -.ti -1c -.RI "virtual torch::Tensor \fBpredict\fP (torch::Tensor &X)=0" -.br -.ti -1c -.RI "virtual std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X)=0" -.br -.ti -1c -.RI "virtual torch::Tensor \fBpredict_proba\fP (torch::Tensor &X)=0" -.br -.ti -1c -.RI "virtual std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X)=0" -.br -.ti -1c -.RI "virtual status_t \fBgetStatus\fP () const =0" -.br -.ti -1c -.RI "virtual float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y)=0" -.br -.ti -1c -.RI "virtual float \fBscore\fP (torch::Tensor &X, torch::Tensor &y)=0" -.br -.ti -1c -.RI "virtual int \fBgetNumberOfNodes\fP () const =0" -.br -.ti -1c -.RI "virtual int \fBgetNumberOfEdges\fP () const =0" -.br -.ti -1c -.RI "virtual int \fBgetNumberOfStates\fP () const =0" -.br -.ti -1c -.RI "virtual int \fBgetClassNumStates\fP () const =0" -.br -.ti -1c -.RI "virtual std::vector< std::string > \fBshow\fP () const =0" -.br -.ti -1c -.RI "virtual std::vector< std::string > \fBgraph\fP (const std::string &title='') const =0" -.br -.ti -1c -.RI "virtual std::string \fBgetVersion\fP ()=0" -.br -.ti -1c -.RI "virtual std::vector< std::string > \fBtopological_order\fP ()=0" -.br -.ti -1c -.RI "virtual std::vector< std::string > \fBgetNotes\fP () const =0" -.br -.ti -1c -.RI "virtual std::string \fBdump_cpt\fP () const =0" -.br -.ti -1c -.RI "virtual void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters)=0" -.br -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "virtual void \fBtrainModel\fP (const torch::Tensor &weights)=0" -.br -.in -1c -.SS "Protected Attributes" - -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBBaseClassifier\&.h\fP\&. -.SH "Member Function Documentation" -.PP -.SS "std::vector< std::string > & bayesnet::BaseClassifier::getValidHyperparameters ()\fR [inline]\fP" - -.PP -Definition at line \fB40\fP of file \fBBaseClassifier\&.h\fP\&. -.SH "Member Data Documentation" -.PP -.SS "std::vector bayesnet::BaseClassifier::validHyperparameters\fR [protected]\fP" - -.PP -Definition at line \fB43\fP of file \fBBaseClassifier\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Boost.3 b/docs/man3/bayesnet_Boost.3 deleted file mode 100644 index 04ec0cc..0000000 --- a/docs/man3/bayesnet_Boost.3 +++ /dev/null @@ -1,369 +0,0 @@ -.TH "bayesnet::Boost" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Boost -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Ensemble\fP\&. -.PP -Inherited by \fBbayesnet::BoostA2DE\fP, and \fBbayesnet::BoostAODE\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBBoost\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters_) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "std::vector< int > \fBfeatureSelection\fP (torch::Tensor &weights_)" -.br -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights\fP (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights_block\fP (int k, torch::Tensor &ytrain, torch::Tensor &weights)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Protected Attributes" - -.in +1c -.ti -1c -.RI "torch::Tensor \fBX_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBX_test\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_test\fP" -.br -.ti -1c -.RI "bool \fBbisection\fP = true" -.br -.ti -1c -.RI "int \fBmaxTolerance\fP = 3" -.br -.ti -1c -.RI "std::string \fBorder_algorithm\fP" -.br -.ti -1c -.RI "bool \fBconvergence\fP = true" -.br -.ti -1c -.RI "bool \fBconvergence_best\fP = false" -.br -.ti -1c -.RI "bool \fBselectFeatures\fP = false" -.br -.ti -1c -.RI "std::string \fBselect_features_algorithm\fP = Orders\&.DESC" -.br -.ti -1c -.RI "FeatureSelect * \fBfeatureSelector\fP = nullptr" -.br -.ti -1c -.RI "double \fBthreshold\fP = \-1" -.br -.ti -1c -.RI "bool \fBblock_update\fP = false" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB27\fP of file \fBBoost\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Boost::Boost (bool predict_voting = \fRfalse\fP)\fR [explicit]\fP" - -.PP -Definition at line \fB13\fP of file \fBBoost\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::Boost::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB71\fP of file \fBBoost\&.cc\fP\&. -.SS "std::vector< int > bayesnet::Boost::featureSelection (torch::Tensor & weights_)\fR [protected]\fP" - -.PP -Definition at line \fB102\fP of file \fBBoost\&.cc\fP\&. -.SS "void bayesnet::Boost::setHyperparameters (const nlohmann::json & hyperparameters_)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB18\fP of file \fBBoost\&.cc\fP\&. -.SS "std::tuple< torch::Tensor &, double, bool > bayesnet::Boost::update_weights (torch::Tensor & ytrain, torch::Tensor & ypred, torch::Tensor & weights)\fR [protected]\fP" - -.PP -Definition at line \fB123\fP of file \fBBoost\&.cc\fP\&. -.SS "std::tuple< torch::Tensor &, double, bool > bayesnet::Boost::update_weights_block (int k, torch::Tensor & ytrain, torch::Tensor & weights)\fR [protected]\fP" - -.PP -Definition at line \fB150\fP of file \fBBoost\&.cc\fP\&. -.SH "Member Data Documentation" -.PP -.SS "bool bayesnet::Boost::bisection = true\fR [protected]\fP" - -.PP -Definition at line \fB39\fP of file \fBBoost\&.h\fP\&. -.SS "bool bayesnet::Boost::block_update = false\fR [protected]\fP" - -.PP -Definition at line \fB48\fP of file \fBBoost\&.h\fP\&. -.SS "bool bayesnet::Boost::convergence = true\fR [protected]\fP" - -.PP -Definition at line \fB42\fP of file \fBBoost\&.h\fP\&. -.SS "bool bayesnet::Boost::convergence_best = false\fR [protected]\fP" - -.PP -Definition at line \fB43\fP of file \fBBoost\&.h\fP\&. -.SS "FeatureSelect* bayesnet::Boost::featureSelector = nullptr\fR [protected]\fP" - -.PP -Definition at line \fB46\fP of file \fBBoost\&.h\fP\&. -.SS "int bayesnet::Boost::maxTolerance = 3\fR [protected]\fP" - -.PP -Definition at line \fB40\fP of file \fBBoost\&.h\fP\&. -.SS "std::string bayesnet::Boost::order_algorithm\fR [protected]\fP" - -.PP -Definition at line \fB41\fP of file \fBBoost\&.h\fP\&. -.SS "std::string bayesnet::Boost::select_features_algorithm = Orders\&.DESC\fR [protected]\fP" - -.PP -Definition at line \fB45\fP of file \fBBoost\&.h\fP\&. -.SS "bool bayesnet::Boost::selectFeatures = false\fR [protected]\fP" - -.PP -Definition at line \fB44\fP of file \fBBoost\&.h\fP\&. -.SS "double bayesnet::Boost::threshold = \-1\fR [protected]\fP" - -.PP -Definition at line \fB47\fP of file \fBBoost\&.h\fP\&. -.SS "torch::Tensor bayesnet::Boost::X_test\fR [protected]\fP" - -.PP -Definition at line \fB37\fP of file \fBBoost\&.h\fP\&. -.SS "torch::Tensor bayesnet::Boost::X_train\fR [protected]\fP" - -.PP -Definition at line \fB37\fP of file \fBBoost\&.h\fP\&. -.SS "torch::Tensor bayesnet::Boost::y_test\fR [protected]\fP" - -.PP -Definition at line \fB37\fP of file \fBBoost\&.h\fP\&. -.SS "torch::Tensor bayesnet::Boost::y_train\fR [protected]\fP" - -.PP -Definition at line \fB37\fP of file \fBBoost\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_BoostA2DE.3 b/docs/man3/bayesnet_BoostA2DE.3 deleted file mode 100644 index b3a9dfe..0000000 --- a/docs/man3/bayesnet_BoostA2DE.3 +++ /dev/null @@ -1,316 +0,0 @@ -.TH "bayesnet::BoostA2DE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::BoostA2DE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Boost\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBBoostA2DE\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title='BoostA2DE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "\fBBoost\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters_) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "std::vector< int > \fBfeatureSelection\fP (torch::Tensor &weights_)" -.br -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights\fP (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights_block\fP (int k, torch::Tensor &ytrain, torch::Tensor &weights)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBX_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBX_test\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_test\fP" -.br -.ti -1c -.RI "bool \fBbisection\fP = true" -.br -.ti -1c -.RI "int \fBmaxTolerance\fP = 3" -.br -.ti -1c -.RI "std::string \fBorder_algorithm\fP" -.br -.ti -1c -.RI "bool \fBconvergence\fP = true" -.br -.ti -1c -.RI "bool \fBconvergence_best\fP = false" -.br -.ti -1c -.RI "bool \fBselectFeatures\fP = false" -.br -.ti -1c -.RI "std::string \fBselect_features_algorithm\fP = Orders\&.DESC" -.br -.ti -1c -.RI "FeatureSelect * \fBfeatureSelector\fP = nullptr" -.br -.ti -1c -.RI "double \fBthreshold\fP = \-1" -.br -.ti -1c -.RI "bool \fBblock_update\fP = false" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB14\fP of file \fBBoostA2DE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::BoostA2DE::BoostA2DE (bool predict_voting = \fRfalse\fP)\fR [explicit]\fP" - -.PP -Definition at line \fB19\fP of file \fBBoostA2DE\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "std::vector< std::string > bayesnet::BoostA2DE::graph (const std::string & title = \fR'BoostA2DE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB163\fP of file \fBBoostA2DE\&.cc\fP\&. -.SS "void bayesnet::BoostA2DE::trainModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB44\fP of file \fBBoostA2DE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_BoostAODE.3 b/docs/man3/bayesnet_BoostAODE.3 deleted file mode 100644 index d5b74c1..0000000 --- a/docs/man3/bayesnet_BoostAODE.3 +++ /dev/null @@ -1,316 +0,0 @@ -.TH "bayesnet::BoostAODE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::BoostAODE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Boost\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBBoostAODE\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title='BoostAODE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "\fBBoost\fP (bool predict_voting=false)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters_) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "std::vector< int > \fBfeatureSelection\fP (torch::Tensor &weights_)" -.br -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights\fP (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)" -.br -.ti -1c -.RI "std::tuple< torch::Tensor &, double, bool > \fBupdate_weights_block\fP (int k, torch::Tensor &ytrain, torch::Tensor &weights)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Boost\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBX_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_train\fP" -.br -.ti -1c -.RI "torch::Tensor \fBX_test\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy_test\fP" -.br -.ti -1c -.RI "bool \fBbisection\fP = true" -.br -.ti -1c -.RI "int \fBmaxTolerance\fP = 3" -.br -.ti -1c -.RI "std::string \fBorder_algorithm\fP" -.br -.ti -1c -.RI "bool \fBconvergence\fP = true" -.br -.ti -1c -.RI "bool \fBconvergence_best\fP = false" -.br -.ti -1c -.RI "bool \fBselectFeatures\fP = false" -.br -.ti -1c -.RI "std::string \fBselect_features_algorithm\fP = Orders\&.DESC" -.br -.ti -1c -.RI "FeatureSelect * \fBfeatureSelector\fP = nullptr" -.br -.ti -1c -.RI "double \fBthreshold\fP = \-1" -.br -.ti -1c -.RI "bool \fBblock_update\fP = false" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Ensemble\fP -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB15\fP of file \fBBoostAODE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::BoostAODE::BoostAODE (bool predict_voting = \fRfalse\fP)\fR [explicit]\fP" - -.PP -Definition at line \fB16\fP of file \fBBoostAODE\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "std::vector< std::string > bayesnet::BoostAODE::graph (const std::string & title = \fR'BoostAODE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB157\fP of file \fBBoostAODE\&.cc\fP\&. -.SS "void bayesnet::BoostAODE::trainModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB33\fP of file \fBBoostAODE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Classifier.3 b/docs/man3/bayesnet_Classifier.3 deleted file mode 100644 index 02549d5..0000000 --- a/docs/man3/bayesnet_Classifier.3 +++ /dev/null @@ -1,360 +0,0 @@ -.TH "bayesnet::Classifier" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Classifier -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::BaseClassifier\fP\&. -.PP -Inherited by \fBbayesnet::Ensemble\fP, \fBbayesnet::KDB\fP, \fBbayesnet::SPODE\fP, \fBbayesnet::SPnDE\fP, and \fBbayesnet::TAN\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "virtual std::vector< std::string > \fBgraph\fP (const std::string &title='') const =0" -.br -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "virtual void \fBbuildModel\fP (const torch::Tensor &weights)=0" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Protected Attributes" - -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB15\fP of file \fBClassifier\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Classifier::Classifier (\fBNetwork\fP model)" - -.PP -Definition at line \fB12\fP of file \fBClassifier\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::Classifier::addNodes ()" - -.PP -Definition at line \fB155\fP of file \fBClassifier\&.cc\fP\&. -.SS "void bayesnet::Classifier::buildDataset (torch::Tensor & y)\fR [protected]\fP" - -.PP -Definition at line \fB30\fP of file \fBClassifier\&.cc\fP\&. -.SS "void bayesnet::Classifier::checkFitParameters ()\fR [protected]\fP" - -.PP -Definition at line \fB79\fP of file \fBClassifier\&.cc\fP\&. -.SS "std::string bayesnet::Classifier::dump_cpt () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB184\fP of file \fBClassifier\&.cc\fP\&. -.SS "\fBClassifier\fP & bayesnet::Classifier::fit (std::vector< std::vector< int > > & X, std::vector< int > & y, const std::vector< std::string > & features, const std::string & className, std::map< std::string, std::vector< int > > & states)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB57\fP of file \fBClassifier\&.cc\fP\&. -.SS "\fBClassifier\fP & bayesnet::Classifier::fit (torch::Tensor & dataset, const std::vector< std::string > & features, const std::string & className, std::map< std::string, std::vector< int > > & states)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB68\fP of file \fBClassifier\&.cc\fP\&. -.SS "\fBClassifier\fP & bayesnet::Classifier::fit (torch::Tensor & dataset, const std::vector< std::string > & features, const std::string & className, std::map< std::string, std::vector< int > > & states, const torch::Tensor & weights)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB74\fP of file \fBClassifier\&.cc\fP\&. -.SS "\fBClassifier\fP & bayesnet::Classifier::fit (torch::Tensor & X, torch::Tensor & y, const std::vector< std::string > & features, const std::string & className, std::map< std::string, std::vector< int > > & states)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB49\fP of file \fBClassifier\&.cc\fP\&. -.SS "int bayesnet::Classifier::getClassNumStates () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB176\fP of file \fBClassifier\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Classifier::getNotes () const\fR [inline]\fP, \fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB38\fP of file \fBClassifier\&.h\fP\&. -.SS "int bayesnet::Classifier::getNumberOfEdges () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB168\fP of file \fBClassifier\&.cc\fP\&. -.SS "int bayesnet::Classifier::getNumberOfNodes () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB163\fP of file \fBClassifier\&.cc\fP\&. -.SS "int bayesnet::Classifier::getNumberOfStates () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB172\fP of file \fBClassifier\&.cc\fP\&. -.SS "status_t bayesnet::Classifier::getStatus () const\fR [inline]\fP, \fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB32\fP of file \fBClassifier\&.h\fP\&. -.SS "std::string bayesnet::Classifier::getVersion ()\fR [inline]\fP, \fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB33\fP of file \fBClassifier\&.h\fP\&. -.SS "std::vector< int > bayesnet::Classifier::predict (std::vector< std::vector< int > > & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB103\fP of file \fBClassifier\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Classifier::predict (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB96\fP of file \fBClassifier\&.cc\fP\&. -.SS "std::vector< std::vector< double > > bayesnet::Classifier::predict_proba (std::vector< std::vector< int > > & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB124\fP of file \fBClassifier\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Classifier::predict_proba (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB117\fP of file \fBClassifier\&.cc\fP\&. -.SS "float bayesnet::Classifier::score (std::vector< std::vector< int > > & X, std::vector< int > & y)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB144\fP of file \fBClassifier\&.cc\fP\&. -.SS "float bayesnet::Classifier::score (torch::Tensor & X, torch::Tensor & y)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB139\fP of file \fBClassifier\&.cc\fP\&. -.SS "void bayesnet::Classifier::setHyperparameters (const nlohmann::json & hyperparameters)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB188\fP of file \fBClassifier\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Classifier::show () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB151\fP of file \fBClassifier\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Classifier::topological_order ()\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB180\fP of file \fBClassifier\&.cc\fP\&. -.SS "void bayesnet::Classifier::trainModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB44\fP of file \fBClassifier\&.cc\fP\&. -.SH "Member Data Documentation" -.PP -.SS "std::string bayesnet::Classifier::className\fR [protected]\fP" - -.PP -Definition at line \fB47\fP of file \fBClassifier\&.h\fP\&. -.SS "torch::Tensor bayesnet::Classifier::dataset\fR [protected]\fP" - -.PP -Definition at line \fB49\fP of file \fBClassifier\&.h\fP\&. -.SS "std::vector bayesnet::Classifier::features\fR [protected]\fP" - -.PP -Definition at line \fB46\fP of file \fBClassifier\&.h\fP\&. -.SS "bool bayesnet::Classifier::fitted\fR [protected]\fP" - -.PP -Definition at line \fB42\fP of file \fBClassifier\&.h\fP\&. -.SS "unsigned int bayesnet::Classifier::m\fR [protected]\fP" - -.PP -Definition at line \fB43\fP of file \fBClassifier\&.h\fP\&. -.SS "Metrics bayesnet::Classifier::metrics\fR [protected]\fP" - -.PP -Definition at line \fB45\fP of file \fBClassifier\&.h\fP\&. -.SS "\fBNetwork\fP bayesnet::Classifier::model\fR [protected]\fP" - -.PP -Definition at line \fB44\fP of file \fBClassifier\&.h\fP\&. -.SS "unsigned int bayesnet::Classifier::n\fR [protected]\fP" - -.PP -Definition at line \fB43\fP of file \fBClassifier\&.h\fP\&. -.SS "std::vector bayesnet::Classifier::notes\fR [protected]\fP" - -.PP -Definition at line \fB51\fP of file \fBClassifier\&.h\fP\&. -.SS "std::map > bayesnet::Classifier::states\fR [protected]\fP" - -.PP -Definition at line \fB48\fP of file \fBClassifier\&.h\fP\&. -.SS "status_t bayesnet::Classifier::status = NORMAL\fR [protected]\fP" - -.PP -Definition at line \fB50\fP of file \fBClassifier\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Ensemble.3 b/docs/man3/bayesnet_Ensemble.3 deleted file mode 100644 index f4c6664..0000000 --- a/docs/man3/bayesnet_Ensemble.3 +++ /dev/null @@ -1,348 +0,0 @@ -.TH "bayesnet::Ensemble" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Ensemble -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Classifier\fP\&. -.PP -Inherited by \fBbayesnet::A2DE\fP, \fBbayesnet::AODE\fP, \fBbayesnet::AODELd\fP, and \fBbayesnet::Boost\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBEnsemble\fP (bool predict_voting=true)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "torch::Tensor \fBpredict_average_voting\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_voting\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_average_proba\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_average_proba\fP (std::vector< std::vector< int > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBcompute_arg_max\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "std::vector< int > \fBcompute_arg_max\fP (std::vector< std::vector< double > > &X)" -.br -.ti -1c -.RI "torch::Tensor \fBvoting\fP (torch::Tensor &votes)" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "virtual void \fBbuildModel\fP (const torch::Tensor &weights)=0" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Protected Attributes" - -.in +1c -.ti -1c -.RI "unsigned \fBn_models\fP" -.br -.ti -1c -.RI "std::vector< std::unique_ptr< \fBClassifier\fP > > \fBmodels\fP" -.br -.ti -1c -.RI "std::vector< double > \fBsignificanceModels\fP" -.br -.ti -1c -.RI "bool \fBpredict_voting\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB15\fP of file \fBEnsemble\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Ensemble::Ensemble (bool predict_voting = \fRtrue\fP)" - -.PP -Definition at line \fB11\fP of file \fBEnsemble\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "std::vector< int > bayesnet::Ensemble::compute_arg_max (std::vector< std::vector< double > > & X)\fR [protected]\fP" - -.PP -Definition at line \fB24\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::compute_arg_max (torch::Tensor & X)\fR [protected]\fP" - -.PP -Definition at line \fB33\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::string bayesnet::Ensemble::dump_cpt () const\fR [inline]\fP, \fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB34\fP of file \fBEnsemble\&.h\fP\&. -.SS "int bayesnet::Ensemble::getNumberOfEdges () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB206\fP of file \fBEnsemble\&.cc\fP\&. -.SS "int bayesnet::Ensemble::getNumberOfNodes () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB198\fP of file \fBEnsemble\&.cc\fP\&. -.SS "int bayesnet::Ensemble::getNumberOfStates () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB214\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Ensemble::graph (const std::string & title) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB189\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< int > bayesnet::Ensemble::predict (std::vector< std::vector< int > > & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB74\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::predict (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB79\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::vector< double > > bayesnet::Ensemble::predict_average_proba (std::vector< std::vector< int > > & X)\fR [protected]\fP" - -.PP -Definition at line \fB104\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::predict_average_proba (torch::Tensor & X)\fR [protected]\fP" - -.PP -Definition at line \fB84\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::vector< double > > bayesnet::Ensemble::predict_average_voting (std::vector< std::vector< int > > & X)\fR [protected]\fP" - -.PP -Definition at line \fB133\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::predict_average_voting (torch::Tensor & X)\fR [protected]\fP" - -.PP -Definition at line \fB140\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::vector< double > > bayesnet::Ensemble::predict_proba (std::vector< std::vector< int > > & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB60\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::predict_proba (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB67\fP of file \fBEnsemble\&.cc\fP\&. -.SS "float bayesnet::Ensemble::score (std::vector< std::vector< int > > & X, std::vector< int > & y)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB169\fP of file \fBEnsemble\&.cc\fP\&. -.SS "float bayesnet::Ensemble::score (torch::Tensor & X, torch::Tensor & y)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB158\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Ensemble::show () const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB180\fP of file \fBEnsemble\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Ensemble::topological_order ()\fR [inline]\fP, \fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB30\fP of file \fBEnsemble\&.h\fP\&. -.SS "void bayesnet::Ensemble::trainModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB16\fP of file \fBEnsemble\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Ensemble::voting (torch::Tensor & votes)\fR [protected]\fP" - -.PP -Definition at line \fB38\fP of file \fBEnsemble\&.cc\fP\&. -.SH "Member Data Documentation" -.PP -.SS "std::vector > bayesnet::Ensemble::models\fR [protected]\fP" - -.PP -Definition at line \fB47\fP of file \fBEnsemble\&.h\fP\&. -.SS "unsigned bayesnet::Ensemble::n_models\fR [protected]\fP" - -.PP -Definition at line \fB46\fP of file \fBEnsemble\&.h\fP\&. -.SS "bool bayesnet::Ensemble::predict_voting\fR [protected]\fP" - -.PP -Definition at line \fB50\fP of file \fBEnsemble\&.h\fP\&. -.SS "std::vector bayesnet::Ensemble::significanceModels\fR [protected]\fP" - -.PP -Definition at line \fB48\fP of file \fBEnsemble\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_KDB.3 b/docs/man3/bayesnet_KDB.3 deleted file mode 100644 index 0f9615b..0000000 --- a/docs/man3/bayesnet_KDB.3 +++ /dev/null @@ -1,201 +0,0 @@ -.TH "bayesnet::KDB" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::KDB -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Classifier\fP\&. -.PP -Inherited by \fBbayesnet::KDBLd\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBKDB\fP (int k, float theta=0\&.03)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters_) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='KDB') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBKDB\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::KDB::KDB (int k, float theta = \fR0\&.03\fP)\fR [explicit]\fP" - -.PP -Definition at line \fB10\fP of file \fBKDB\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::KDB::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB28\fP of file \fBKDB\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::KDB::graph (const std::string & name = \fR'KDB'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB103\fP of file \fBKDB\&.cc\fP\&. -.SS "void bayesnet::KDB::setHyperparameters (const nlohmann::json & hyperparameters_)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB15\fP of file \fBKDB\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_KDBLd.3 b/docs/man3/bayesnet_KDBLd.3 deleted file mode 100644 index 4ed0bb5..0000000 --- a/docs/man3/bayesnet_KDBLd.3 +++ /dev/null @@ -1,254 +0,0 @@ -.TH "bayesnet::KDBLd" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::KDBLd -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::KDB\fP, and \fBbayesnet::Proposal\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBKDBLd\fP (int k)" -.br -.ti -1c -.RI "\fBKDBLd\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='KDB') const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::KDB\fP -.in +1c -.ti -1c -.RI "\fBKDB\fP (int k, float theta=0\&.03)" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters_) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "\fBProposal\fP (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)" -.br -.in -1c -.SS "Static Public Member Functions" - -.in +1c -.ti -1c -.RI "static std::string \fBversion\fP ()" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Member Functions inherited from \fBbayesnet::KDB\fP -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "void \fBcheckInput\fP (const torch::Tensor &X, const torch::Tensor &y)" -.br -.ti -1c -.RI "torch::Tensor \fBprepareX\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBlocalDiscretizationProposal\fP (const map< std::string, std::vector< int > > &states, \fBNetwork\fP &model)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBfit_local_discretization\fP (const torch::Tensor &y)" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBXf\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy\fP" -.br -.ti -1c -.RI "map< std::string, mdlp::CPPFImdlp * > \fBdiscretizers\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBKDBLd\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::KDBLd::KDBLd (int k)\fR [explicit]\fP" - -.PP -Definition at line \fB10\fP of file \fBKDBLd\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "\fBKDBLd\fP & bayesnet::KDBLd::fit (torch::Tensor & X, torch::Tensor & y, const std::vector< std::string > & features, const std::string & className, map< std::string, std::vector< int > > & states)\fR [override]\fP" - -.PP -Definition at line \fB11\fP of file \fBKDBLd\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::KDBLd::graph (const std::string & name = \fR'KDB'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::KDB\fP\&. -.PP -Definition at line \fB31\fP of file \fBKDBLd\&.cc\fP\&. -.SS "torch::Tensor bayesnet::KDBLd::predict (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB26\fP of file \fBKDBLd\&.cc\fP\&. -.SS "static std::string bayesnet::KDBLd::version ()\fR [inline]\fP, \fR [static]\fP" - -.PP -Definition at line \fB21\fP of file \fBKDBLd\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Network.3 b/docs/man3/bayesnet_Network.3 deleted file mode 100644 index e5b40a9..0000000 --- a/docs/man3/bayesnet_Network.3 +++ /dev/null @@ -1,223 +0,0 @@ -.TH "bayesnet::Network" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Network -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBNetwork\fP (float)" -.br -.ti -1c -.RI "\fBNetwork\fP (const \fBNetwork\fP &)" -.br -.ti -1c -.RI "torch::Tensor & \fBgetSamples\fP ()" -.br -.ti -1c -.RI "float \fBgetMaxThreads\fP () const" -.br -.ti -1c -.RI "void \fBaddNode\fP (const std::string &)" -.br -.ti -1c -.RI "void \fBaddEdge\fP (const std::string &, const std::string &)" -.br -.ti -1c -.RI "std::map< std::string, std::unique_ptr< \fBNode\fP > > & \fBgetNodes\fP ()" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetFeatures\fP () const" -.br -.ti -1c -.RI "int \fBgetStates\fP () const" -.br -.ti -1c -.RI "std::vector< std::pair< std::string, std::string > > \fBgetEdges\fP () const" -.br -.ti -1c -.RI "int \fBgetNumEdges\fP () const" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const" -.br -.ti -1c -.RI "std::string \fBgetClassName\fP () const" -.br -.ti -1c -.RI "void \fBfit\fP (const std::vector< std::vector< int > > &input_data, const std::vector< int > &labels, const std::vector< double > &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)" -.br -.ti -1c -.RI "void \fBfit\fP (const torch::Tensor &X, const torch::Tensor &y, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)" -.br -.ti -1c -.RI "void \fBfit\fP (const torch::Tensor &samples, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (const std::vector< std::vector< int > > &)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (const torch::Tensor &)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_tensor\fP (const torch::Tensor &samples, const bool proba)" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (const std::vector< std::vector< int > > &)" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (const torch::Tensor &)" -.br -.ti -1c -.RI "double \fBscore\fP (const std::vector< std::vector< int > > &, const std::vector< int > &)" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_sort\fP ()" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &title) const" -.br -.ti -1c -.RI "void \fBinitialize\fP ()" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const" -.br -.ti -1c -.RI "std::string \fBversion\fP ()" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB15\fP of file \fBNetwork\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Network::Network ()" - -.PP -Definition at line \fB13\fP of file \fBNetwork\&.cc\fP\&. -.SS "bayesnet::Network::Network (float maxT)\fR [explicit]\fP" - -.PP -Definition at line \fB16\fP of file \fBNetwork\&.cc\fP\&. -.SS "bayesnet::Network::Network (const \fBNetwork\fP & other)\fR [explicit]\fP" - -.PP -Definition at line \fB20\fP of file \fBNetwork\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::Network::addEdge (const std::string & parent, const std::string & child)" - -.PP -Definition at line \fB95\fP of file \fBNetwork\&.cc\fP\&. -.SS "void bayesnet::Network::addNode (const std::string & name)" - -.PP -Definition at line \fB46\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::string bayesnet::Network::dump_cpt () const" - -.PP -Definition at line \fB420\fP of file \fBNetwork\&.cc\fP\&. -.SS "void bayesnet::Network::fit (const std::vector< std::vector< int > > & input_data, const std::vector< int > & labels, const std::vector< double > & weights, const std::vector< std::string > & featureNames, const std::string & className, const std::map< std::string, std::vector< int > > & states)" - -.PP -Definition at line \fB177\fP of file \fBNetwork\&.cc\fP\&. -.SS "void bayesnet::Network::fit (const torch::Tensor & samples, const torch::Tensor & weights, const std::vector< std::string > & featureNames, const std::string & className, const std::map< std::string, std::vector< int > > & states)" - -.PP -Definition at line \fB169\fP of file \fBNetwork\&.cc\fP\&. -.SS "void bayesnet::Network::fit (const torch::Tensor & X, const torch::Tensor & y, const torch::Tensor & weights, const std::vector< std::string > & featureNames, const std::string & className, const std::map< std::string, std::vector< int > > & states)" - -.PP -Definition at line \fB158\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::string bayesnet::Network::getClassName () const" - -.PP -Definition at line \fB75\fP of file \fBNetwork\&.cc\fP\&. -.SS "int bayesnet::Network::getClassNumStates () const" - -.PP -Definition at line \fB63\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::pair< std::string, std::string > > bayesnet::Network::getEdges () const" - -.PP -Definition at line \fB371\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Network::getFeatures () const" - -.PP -Definition at line \fB59\fP of file \fBNetwork\&.cc\fP\&. -.SS "float bayesnet::Network::getMaxThreads () const" - -.PP -Definition at line \fB38\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::map< std::string, std::unique_ptr< \fBNode\fP > > & bayesnet::Network::getNodes ()" - -.PP -Definition at line \fB116\fP of file \fBNetwork\&.cc\fP\&. -.SS "int bayesnet::Network::getNumEdges () const" - -.PP -Definition at line \fB383\fP of file \fBNetwork\&.cc\fP\&. -.SS "torch::Tensor & bayesnet::Network::getSamples ()" - -.PP -Definition at line \fB42\fP of file \fBNetwork\&.cc\fP\&. -.SS "int bayesnet::Network::getStates () const" - -.PP -Definition at line \fB67\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Network::graph (const std::string & title) const" - -.PP -Definition at line \fB357\fP of file \fBNetwork\&.cc\fP\&. -.SS "void bayesnet::Network::initialize ()" - -.PP -Definition at line \fB29\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< int > bayesnet::Network::predict (const std::vector< std::vector< int > > & tsamples)" - -.PP -Definition at line \fB237\fP of file \fBNetwork\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Network::predict (const torch::Tensor & samples)" - -.PP -Definition at line \fB230\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::vector< double > > bayesnet::Network::predict_proba (const std::vector< std::vector< int > > & tsamples)" - -.PP -Definition at line \fB259\fP of file \fBNetwork\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Network::predict_proba (const torch::Tensor & samples)" - -.PP -Definition at line \fB224\fP of file \fBNetwork\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Network::predict_tensor (const torch::Tensor & samples, const bool proba)" - -.PP -Definition at line \fB205\fP of file \fBNetwork\&.cc\fP\&. -.SS "double bayesnet::Network::score (const std::vector< std::vector< int > > & tsamples, const std::vector< int > & labels)" - -.PP -Definition at line \fB275\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Network::show () const" - -.PP -Definition at line \fB344\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Network::topological_sort ()" - -.PP -Definition at line \fB387\fP of file \fBNetwork\&.cc\fP\&. -.SS "std::string bayesnet::Network::version ()\fR [inline]\fP" - -.PP -Definition at line \fB49\fP of file \fBNetwork\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Node.3 b/docs/man3/bayesnet_Node.3 deleted file mode 100644 index d3279e4..0000000 --- a/docs/man3/bayesnet_Node.3 +++ /dev/null @@ -1,135 +0,0 @@ -.TH "bayesnet::Node" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Node -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBNode\fP (const std::string &)" -.br -.ti -1c -.RI "void \fBclear\fP ()" -.br -.ti -1c -.RI "void \fBaddParent\fP (\fBNode\fP *)" -.br -.ti -1c -.RI "void \fBaddChild\fP (\fBNode\fP *)" -.br -.ti -1c -.RI "void \fBremoveParent\fP (\fBNode\fP *)" -.br -.ti -1c -.RI "void \fBremoveChild\fP (\fBNode\fP *)" -.br -.ti -1c -.RI "std::string \fBgetName\fP () const" -.br -.ti -1c -.RI "std::vector< \fBNode\fP * > & \fBgetParents\fP ()" -.br -.ti -1c -.RI "std::vector< \fBNode\fP * > & \fBgetChildren\fP ()" -.br -.ti -1c -.RI "torch::Tensor & \fBgetCPT\fP ()" -.br -.ti -1c -.RI "void \fBcomputeCPT\fP (const torch::Tensor &dataset, const std::vector< std::string > &features, const double laplaceSmoothing, const torch::Tensor &weights)" -.br -.ti -1c -.RI "int \fBgetNumStates\fP () const" -.br -.ti -1c -.RI "void \fBsetNumStates\fP (int)" -.br -.ti -1c -.RI "unsigned \fBminFill\fP ()" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &clasName)" -.br -.ti -1c -.RI "float \fBgetFactorValue\fP (std::map< std::string, int > &)" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB14\fP of file \fBNode\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Node::Node (const std::string & name)\fR [explicit]\fP" - -.PP -Definition at line \fB11\fP of file \fBNode\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::Node::addChild (\fBNode\fP * child)" - -.PP -Definition at line \fB39\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::addParent (\fBNode\fP * parent)" - -.PP -Definition at line \fB27\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::clear ()" - -.PP -Definition at line \fB15\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::computeCPT (const torch::Tensor & dataset, const std::vector< std::string > & features, const double laplaceSmoothing, const torch::Tensor & weights)" - -.PP -Definition at line \fB93\fP of file \fBNode\&.cc\fP\&. -.SS "std::vector< \fBNode\fP * > & bayesnet::Node::getChildren ()" - -.PP -Definition at line \fB47\fP of file \fBNode\&.cc\fP\&. -.SS "torch::Tensor & bayesnet::Node::getCPT ()" - -.PP -Definition at line \fB59\fP of file \fBNode\&.cc\fP\&. -.SS "float bayesnet::Node::getFactorValue (std::map< std::string, int > & evidence)" - -.PP -Definition at line \fB124\fP of file \fBNode\&.cc\fP\&. -.SS "std::string bayesnet::Node::getName () const" - -.PP -Definition at line \fB23\fP of file \fBNode\&.cc\fP\&. -.SS "int bayesnet::Node::getNumStates () const" - -.PP -Definition at line \fB51\fP of file \fBNode\&.cc\fP\&. -.SS "std::vector< \fBNode\fP * > & bayesnet::Node::getParents ()" - -.PP -Definition at line \fB43\fP of file \fBNode\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::Node::graph (const std::string & clasName)" - -.PP -Definition at line \fB132\fP of file \fBNode\&.cc\fP\&. -.SS "unsigned bayesnet::Node::minFill ()" - -.PP -Definition at line \fB70\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::removeChild (\fBNode\fP * child)" - -.PP -Definition at line \fB35\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::removeParent (\fBNode\fP * parent)" - -.PP -Definition at line \fB31\fP of file \fBNode\&.cc\fP\&. -.SS "void bayesnet::Node::setNumStates (int numStates)" - -.PP -Definition at line \fB55\fP of file \fBNode\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_Proposal.3 b/docs/man3/bayesnet_Proposal.3 deleted file mode 100644 index ad37186..0000000 --- a/docs/man3/bayesnet_Proposal.3 +++ /dev/null @@ -1,95 +0,0 @@ -.TH "bayesnet::Proposal" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::Proposal -.SH SYNOPSIS -.br -.PP -.PP -Inherited by \fBbayesnet::AODELd\fP, \fBbayesnet::KDBLd\fP, \fBbayesnet::SPODELd\fP, and \fBbayesnet::TANLd\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBProposal\fP (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBcheckInput\fP (const torch::Tensor &X, const torch::Tensor &y)" -.br -.ti -1c -.RI "torch::Tensor \fBprepareX\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBlocalDiscretizationProposal\fP (const map< std::string, std::vector< int > > &states, \fBNetwork\fP &model)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBfit_local_discretization\fP (const torch::Tensor &y)" -.br -.in -1c -.SS "Protected Attributes" - -.in +1c -.ti -1c -.RI "torch::Tensor \fBXf\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy\fP" -.br -.ti -1c -.RI "map< std::string, mdlp::CPPFImdlp * > \fBdiscretizers\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB17\fP of file \fBProposal\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::Proposal::Proposal (torch::Tensor & pDataset, std::vector< std::string > & features_, std::string & className_)" - -.PP -Definition at line \fB10\fP of file \fBProposal\&.cc\fP\&. -.SS "bayesnet::Proposal::~Proposal ()\fR [virtual]\fP" - -.PP -Definition at line \fB11\fP of file \fBProposal\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::Proposal::checkInput (const torch::Tensor & X, const torch::Tensor & y)\fR [protected]\fP" - -.PP -Definition at line \fB17\fP of file \fBProposal\&.cc\fP\&. -.SS "map< std::string, std::vector< int > > bayesnet::Proposal::fit_local_discretization (const torch::Tensor & y)\fR [protected]\fP" - -.PP -Definition at line \fB77\fP of file \fBProposal\&.cc\fP\&. -.SS "map< std::string, std::vector< int > > bayesnet::Proposal::localDiscretizationProposal (const map< std::string, std::vector< int > > & states, \fBNetwork\fP & model)\fR [protected]\fP" - -.PP -Definition at line \fB26\fP of file \fBProposal\&.cc\fP\&. -.SS "torch::Tensor bayesnet::Proposal::prepareX (torch::Tensor & X)\fR [protected]\fP" - -.PP -Definition at line \fB104\fP of file \fBProposal\&.cc\fP\&. -.SH "Member Data Documentation" -.PP -.SS "map bayesnet::Proposal::discretizers\fR [protected]\fP" - -.PP -Definition at line \fB28\fP of file \fBProposal\&.h\fP\&. -.SS "torch::Tensor bayesnet::Proposal::Xf\fR [protected]\fP" - -.PP -Definition at line \fB26\fP of file \fBProposal\&.h\fP\&. -.SS "torch::Tensor bayesnet::Proposal::y\fR [protected]\fP" - -.PP -Definition at line \fB27\fP of file \fBProposal\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_SPODE.3 b/docs/man3/bayesnet_SPODE.3 deleted file mode 100644 index d75d468..0000000 --- a/docs/man3/bayesnet_SPODE.3 +++ /dev/null @@ -1,195 +0,0 @@ -.TH "bayesnet::SPODE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::SPODE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Classifier\fP\&. -.PP -Inherited by \fBbayesnet::SPODELd\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBSPODE\fP (int root)" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='SPODE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB12\fP of file \fBSPODE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::SPODE::SPODE (int root)\fR [explicit]\fP" - -.PP -Definition at line \fB11\fP of file \fBSPODE\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::SPODE::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB13\fP of file \fBSPODE\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::SPODE::graph (const std::string & name = \fR'SPODE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB26\fP of file \fBSPODE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_SPODELd.3 b/docs/man3/bayesnet_SPODELd.3 deleted file mode 100644 index 43e1bdc..0000000 --- a/docs/man3/bayesnet_SPODELd.3 +++ /dev/null @@ -1,268 +0,0 @@ -.TH "bayesnet::SPODELd" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::SPODELd -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::SPODE\fP, and \fBbayesnet::Proposal\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBSPODELd\fP (int root)" -.br -.ti -1c -.RI "\fBSPODELd\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBSPODELd\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBSPODELd\fP & \fBcommonFit\fP (const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states)" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='SPODE') const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::SPODE\fP -.in +1c -.ti -1c -.RI "\fBSPODE\fP (int root)" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "\fBProposal\fP (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)" -.br -.in -1c -.SS "Static Public Member Functions" - -.in +1c -.ti -1c -.RI "static std::string \fBversion\fP ()" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Member Functions inherited from \fBbayesnet::SPODE\fP -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "void \fBcheckInput\fP (const torch::Tensor &X, const torch::Tensor &y)" -.br -.ti -1c -.RI "torch::Tensor \fBprepareX\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBlocalDiscretizationProposal\fP (const map< std::string, std::vector< int > > &states, \fBNetwork\fP &model)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBfit_local_discretization\fP (const torch::Tensor &y)" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBXf\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy\fP" -.br -.ti -1c -.RI "map< std::string, mdlp::CPPFImdlp * > \fBdiscretizers\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBSPODELd\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::SPODELd::SPODELd (int root)\fR [explicit]\fP" - -.PP -Definition at line \fB10\fP of file \fBSPODELd\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "\fBSPODELd\fP & bayesnet::SPODELd::commonFit (const std::vector< std::string > & features, const std::string & className, map< std::string, std::vector< int > > & states)" - -.PP -Definition at line \fB29\fP of file \fBSPODELd\&.cc\fP\&. -.SS "\fBSPODELd\fP & bayesnet::SPODELd::fit (torch::Tensor & dataset, const std::vector< std::string > & features, const std::string & className, map< std::string, std::vector< int > > & states)\fR [override]\fP" - -.PP -Definition at line \fB19\fP of file \fBSPODELd\&.cc\fP\&. -.SS "\fBSPODELd\fP & bayesnet::SPODELd::fit (torch::Tensor & X, torch::Tensor & y, const std::vector< std::string > & features, const std::string & className, map< std::string, std::vector< int > > & states)\fR [override]\fP" - -.PP -Definition at line \fB11\fP of file \fBSPODELd\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::SPODELd::graph (const std::string & name = \fR'SPODE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::SPODE\fP\&. -.PP -Definition at line \fB46\fP of file \fBSPODELd\&.cc\fP\&. -.SS "torch::Tensor bayesnet::SPODELd::predict (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB41\fP of file \fBSPODELd\&.cc\fP\&. -.SS "static std::string bayesnet::SPODELd::version ()\fR [inline]\fP, \fR [static]\fP" - -.PP -Definition at line \fB22\fP of file \fBSPODELd\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_SPnDE.3 b/docs/man3/bayesnet_SPnDE.3 deleted file mode 100644 index afb6e61..0000000 --- a/docs/man3/bayesnet_SPnDE.3 +++ /dev/null @@ -1,193 +0,0 @@ -.TH "bayesnet::SPnDE" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::SPnDE -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Classifier\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBSPnDE\fP (std::vector< int > parents)" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='SPnDE') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBSPnDE\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::SPnDE::SPnDE (std::vector< int > parents)\fR [explicit]\fP" - -.PP -Definition at line \fB11\fP of file \fBSPnDE\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::SPnDE::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB13\fP of file \fBSPnDE\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::SPnDE::graph (const std::string & name = \fR'SPnDE'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB33\fP of file \fBSPnDE\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_TAN.3 b/docs/man3/bayesnet_TAN.3 deleted file mode 100644 index 1aa8b71..0000000 --- a/docs/man3/bayesnet_TAN.3 +++ /dev/null @@ -1,192 +0,0 @@ -.TH "bayesnet::TAN" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::TAN -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::Classifier\fP\&. -.PP -Inherited by \fBbayesnet::TANLd\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='TAN') const override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c -.SS "Protected Member Functions" - -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB11\fP of file \fBTAN\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::TAN::TAN ()" - -.PP -Definition at line \fB10\fP of file \fBTAN\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "void bayesnet::TAN::buildModel (const torch::Tensor & weights)\fR [override]\fP, \fR [protected]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB12\fP of file \fBTAN\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::TAN::graph (const std::string & name = \fR'TAN'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Implements \fBbayesnet::BaseClassifier\fP\&. -.PP -Definition at line \fB41\fP of file \fBTAN\&.cc\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/man3/bayesnet_TANLd.3 b/docs/man3/bayesnet_TANLd.3 deleted file mode 100644 index 45b05d3..0000000 --- a/docs/man3/bayesnet_TANLd.3 +++ /dev/null @@ -1,244 +0,0 @@ -.TH "bayesnet::TANLd" 3 "Version 1.0.5" "BayesNet" \" -*- nroff -*- -.ad l -.nh -.SH NAME -bayesnet::TANLd -.SH SYNOPSIS -.br -.PP -.PP -Inherits \fBbayesnet::TAN\fP, and \fBbayesnet::Proposal\fP\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "\fBTANLd\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgraph\fP (const std::string &name='TAN') const override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict\fP (torch::Tensor &X) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "\fBClassifier\fP (\fBNetwork\fP model)" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override" -.br -.ti -1c -.RI "\fBClassifier\fP & \fBfit\fP (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBaddNodes\fP ()" -.br -.ti -1c -.RI "int \fBgetNumberOfNodes\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfEdges\fP () const override" -.br -.ti -1c -.RI "int \fBgetNumberOfStates\fP () const override" -.br -.ti -1c -.RI "int \fBgetClassNumStates\fP () const override" -.br -.ti -1c -.RI "std::vector< int > \fBpredict\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "torch::Tensor \fBpredict_proba\fP (torch::Tensor &X) override" -.br -.ti -1c -.RI "std::vector< std::vector< double > > \fBpredict_proba\fP (std::vector< std::vector< int > > &X) override" -.br -.ti -1c -.RI "status_t \fBgetStatus\fP () const override" -.br -.ti -1c -.RI "std::string \fBgetVersion\fP () override" -.br -.ti -1c -.RI "float \fBscore\fP (torch::Tensor &X, torch::Tensor &y) override" -.br -.ti -1c -.RI "float \fBscore\fP (std::vector< std::vector< int > > &X, std::vector< int > &y) override" -.br -.ti -1c -.RI "std::vector< std::string > \fBshow\fP () const override" -.br -.ti -1c -.RI "std::vector< std::string > \fBtopological_order\fP () override" -.br -.ti -1c -.RI "std::vector< std::string > \fBgetNotes\fP () const override" -.br -.ti -1c -.RI "std::string \fBdump_cpt\fP () const override" -.br -.ti -1c -.RI "void \fBsetHyperparameters\fP (const nlohmann::json &hyperparameters) override" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > & \fBgetValidHyperparameters\fP ()" -.br -.in -1c - -Public Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "\fBProposal\fP (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)" -.br -.in -1c -.SS "Static Public Member Functions" - -.in +1c -.ti -1c -.RI "static std::string \fBversion\fP ()" -.br -.in -1c -.SS "Additional Inherited Members" - - -Protected Member Functions inherited from \fBbayesnet::TAN\fP -.in +1c -.ti -1c -.RI "void \fBbuildModel\fP (const torch::Tensor &weights) override" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "void \fBcheckFitParameters\fP ()" -.br -.ti -1c -.RI "void \fBtrainModel\fP (const torch::Tensor &weights) override" -.br -.ti -1c -.RI "void \fBbuildDataset\fP (torch::Tensor &y)" -.br -.in -1c - -Protected Member Functions inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "void \fBcheckInput\fP (const torch::Tensor &X, const torch::Tensor &y)" -.br -.ti -1c -.RI "torch::Tensor \fBprepareX\fP (torch::Tensor &X)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBlocalDiscretizationProposal\fP (const map< std::string, std::vector< int > > &states, \fBNetwork\fP &model)" -.br -.ti -1c -.RI "map< std::string, std::vector< int > > \fBfit_local_discretization\fP (const torch::Tensor &y)" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Classifier\fP -.in +1c -.ti -1c -.RI "bool \fBfitted\fP" -.br -.ti -1c -.RI "unsigned int \fBm\fP" -.br -.ti -1c -.RI "unsigned int \fBn\fP" -.br -.ti -1c -.RI "\fBNetwork\fP \fBmodel\fP" -.br -.ti -1c -.RI "Metrics \fBmetrics\fP" -.br -.ti -1c -.RI "std::vector< std::string > \fBfeatures\fP" -.br -.ti -1c -.RI "std::string \fBclassName\fP" -.br -.ti -1c -.RI "std::map< std::string, std::vector< int > > \fBstates\fP" -.br -.ti -1c -.RI "torch::Tensor \fBdataset\fP" -.br -.ti -1c -.RI "status_t \fBstatus\fP = NORMAL" -.br -.ti -1c -.RI "std::vector< std::string > \fBnotes\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::BaseClassifier\fP -.in +1c -.ti -1c -.RI "std::vector< std::string > \fBvalidHyperparameters\fP" -.br -.in -1c - -Protected Attributes inherited from \fBbayesnet::Proposal\fP -.in +1c -.ti -1c -.RI "torch::Tensor \fBXf\fP" -.br -.ti -1c -.RI "torch::Tensor \fBy\fP" -.br -.ti -1c -.RI "map< std::string, mdlp::CPPFImdlp * > \fBdiscretizers\fP" -.br -.in -1c -.SH "Detailed Description" -.PP -Definition at line \fB13\fP of file \fBTANLd\&.h\fP\&. -.SH "Constructor & Destructor Documentation" -.PP -.SS "bayesnet::TANLd::TANLd ()" - -.PP -Definition at line \fB10\fP of file \fBTANLd\&.cc\fP\&. -.SH "Member Function Documentation" -.PP -.SS "\fBTANLd\fP & bayesnet::TANLd::fit (torch::Tensor & X, torch::Tensor & y, const std::vector< std::string > & features, const std::string & className, map< std::string, std::vector< int > > & states)\fR [override]\fP" - -.PP -Definition at line \fB11\fP of file \fBTANLd\&.cc\fP\&. -.SS "std::vector< std::string > bayesnet::TANLd::graph (const std::string & name = \fR'TAN'\fP) const\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::TAN\fP\&. -.PP -Definition at line \fB32\fP of file \fBTANLd\&.cc\fP\&. -.SS "torch::Tensor bayesnet::TANLd::predict (torch::Tensor & X)\fR [override]\fP, \fR [virtual]\fP" - -.PP -Reimplemented from \fBbayesnet::Classifier\fP\&. -.PP -Definition at line \fB27\fP of file \fBTANLd\&.cc\fP\&. -.SS "static std::string bayesnet::TANLd::version ()\fR [inline]\fP, \fR [static]\fP" - -.PP -Definition at line \fB21\fP of file \fBTANLd\&.h\fP\&. - -.SH "Author" -.PP -Generated automatically by Doxygen for BayesNet from the source code\&. diff --git a/docs/manual/_a2_d_e_8cc_source.html b/docs/manual/_a2_d_e_8cc_source.html deleted file mode 100644 index c60a9ee..0000000 --- a/docs/manual/_a2_d_e_8cc_source.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/A2DE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    A2DE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "A2DE.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 A2DE::A2DE(bool predict_voting) : Ensemble(predict_voting)
    -
    11 {
    -
    12 validHyperparameters = { "predict_voting" };
    -
    13 }
    -
    14 void A2DE::setHyperparameters(const nlohmann::json& hyperparameters_)
    -
    15 {
    -
    16 auto hyperparameters = hyperparameters_;
    -
    17 if (hyperparameters.contains("predict_voting")) {
    -
    18 predict_voting = hyperparameters["predict_voting"];
    -
    19 hyperparameters.erase("predict_voting");
    -
    20 }
    -
    21 Classifier::setHyperparameters(hyperparameters);
    -
    22 }
    -
    23 void A2DE::buildModel(const torch::Tensor& weights)
    -
    24 {
    -
    25 models.clear();
    -
    26 significanceModels.clear();
    -
    27 for (int i = 0; i < features.size() - 1; ++i) {
    -
    28 for (int j = i + 1; j < features.size(); ++j) {
    -
    29 auto model = std::make_unique<SPnDE>(std::vector<int>({ i, j }));
    -
    30 models.push_back(std::move(model));
    -
    31 }
    -
    32 }
    -
    33 n_models = static_cast<unsigned>(models.size());
    -
    34 significanceModels = std::vector<double>(n_models, 1.0);
    -
    35 }
    -
    36 std::vector<std::string> A2DE::graph(const std::string& title) const
    -
    37 {
    -
    38 return Ensemble::graph(title);
    -
    39 }
    -
    40}
    -
    -
    - - - - diff --git a/docs/manual/_a2_d_e_8h_source.html b/docs/manual/_a2_d_e_8h_source.html deleted file mode 100644 index 9264c69..0000000 --- a/docs/manual/_a2_d_e_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/A2DE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    A2DE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef A2DE_H
    -
    8#define A2DE_H
    -
    9#include "bayesnet/classifiers/SPnDE.h"
    -
    10#include "Ensemble.h"
    -
    11namespace bayesnet {
    -
    -
    12 class A2DE : public Ensemble {
    -
    13 public:
    -
    14 A2DE(bool predict_voting = false);
    -
    15 virtual ~A2DE() {};
    -
    16 void setHyperparameters(const nlohmann::json& hyperparameters) override;
    -
    17 std::vector<std::string> graph(const std::string& title = "A2DE") const override;
    -
    18 protected:
    -
    19 void buildModel(const torch::Tensor& weights) override;
    -
    20 };
    -
    -
    21}
    -
    22#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_a_o_d_e_8cc_source.html b/docs/manual/_a_o_d_e_8cc_source.html deleted file mode 100644 index 01ec16d..0000000 --- a/docs/manual/_a_o_d_e_8cc_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    AODE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "AODE.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 AODE::AODE(bool predict_voting) : Ensemble(predict_voting)
    -
    11 {
    -
    12 validHyperparameters = { "predict_voting" };
    -
    13
    -
    14 }
    -
    15 void AODE::setHyperparameters(const nlohmann::json& hyperparameters_)
    -
    16 {
    -
    17 auto hyperparameters = hyperparameters_;
    -
    18 if (hyperparameters.contains("predict_voting")) {
    -
    19 predict_voting = hyperparameters["predict_voting"];
    -
    20 hyperparameters.erase("predict_voting");
    -
    21 }
    -
    22 Classifier::setHyperparameters(hyperparameters);
    -
    23 }
    -
    24 void AODE::buildModel(const torch::Tensor& weights)
    -
    25 {
    -
    26 models.clear();
    -
    27 significanceModels.clear();
    -
    28 for (int i = 0; i < features.size(); ++i) {
    -
    29 models.push_back(std::make_unique<SPODE>(i));
    -
    30 }
    -
    31 n_models = models.size();
    -
    32 significanceModels = std::vector<double>(n_models, 1.0);
    -
    33 }
    -
    34 std::vector<std::string> AODE::graph(const std::string& title) const
    -
    35 {
    -
    36 return Ensemble::graph(title);
    -
    37 }
    -
    38}
    -
    -
    - - - - diff --git a/docs/manual/_a_o_d_e_8h_source.html b/docs/manual/_a_o_d_e_8h_source.html deleted file mode 100644 index dbd20c0..0000000 --- a/docs/manual/_a_o_d_e_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    AODE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef AODE_H
    -
    8#define AODE_H
    -
    9#include "bayesnet/classifiers/SPODE.h"
    -
    10#include "Ensemble.h"
    -
    11namespace bayesnet {
    -
    -
    12 class AODE : public Ensemble {
    -
    13 public:
    -
    14 AODE(bool predict_voting = false);
    -
    15 virtual ~AODE() {};
    -
    16 void setHyperparameters(const nlohmann::json& hyperparameters) override;
    -
    17 std::vector<std::string> graph(const std::string& title = "AODE") const override;
    -
    18 protected:
    -
    19 void buildModel(const torch::Tensor& weights) override;
    -
    20 };
    -
    -
    21}
    -
    22#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_a_o_d_e_ld_8cc_source.html b/docs/manual/_a_o_d_e_ld_8cc_source.html deleted file mode 100644 index bcc508c..0000000 --- a/docs/manual/_a_o_d_e_ld_8cc_source.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODELd.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    AODELd.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "AODELd.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 AODELd::AODELd(bool predict_voting) : Ensemble(predict_voting), Proposal(dataset, features, className)
    -
    11 {
    -
    12 }
    -
    13 AODELd& AODELd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    14 {
    -
    15 checkInput(X_, y_);
    -
    16 features = features_;
    -
    17 className = className_;
    -
    18 Xf = X_;
    -
    19 y = y_;
    -
    20 // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -
    21 states = fit_local_discretization(y);
    -
    22 // We have discretized the input data
    -
    23 // 1st we need to fit the model to build the normal TAN structure, TAN::fit initializes the base Bayesian network
    -
    24 Ensemble::fit(dataset, features, className, states);
    -
    25 return *this;
    -
    26
    -
    27 }
    -
    28 void AODELd::buildModel(const torch::Tensor& weights)
    -
    29 {
    -
    30 models.clear();
    -
    31 for (int i = 0; i < features.size(); ++i) {
    -
    32 models.push_back(std::make_unique<SPODELd>(i));
    -
    33 }
    -
    34 n_models = models.size();
    -
    35 significanceModels = std::vector<double>(n_models, 1.0);
    -
    36 }
    -
    37 void AODELd::trainModel(const torch::Tensor& weights)
    -
    38 {
    -
    39 for (const auto& model : models) {
    -
    40 model->fit(Xf, y, features, className, states);
    -
    41 }
    -
    42 }
    -
    43 std::vector<std::string> AODELd::graph(const std::string& name) const
    -
    44 {
    -
    45 return Ensemble::graph(name);
    -
    46 }
    -
    47}
    -
    -
    - - - - diff --git a/docs/manual/_a_o_d_e_ld_8h_source.html b/docs/manual/_a_o_d_e_ld_8h_source.html deleted file mode 100644 index 1420501..0000000 --- a/docs/manual/_a_o_d_e_ld_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODELd.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    AODELd.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef AODELD_H
    -
    8#define AODELD_H
    -
    9#include "bayesnet/classifiers/Proposal.h"
    -
    10#include "bayesnet/classifiers/SPODELd.h"
    -
    11#include "Ensemble.h"
    -
    12
    -
    13namespace bayesnet {
    -
    -
    14 class AODELd : public Ensemble, public Proposal {
    -
    15 public:
    -
    16 AODELd(bool predict_voting = true);
    -
    17 virtual ~AODELd() = default;
    -
    18 AODELd& fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_) override;
    -
    19 std::vector<std::string> graph(const std::string& name = "AODELd") const override;
    -
    20 protected:
    -
    21 void trainModel(const torch::Tensor& weights) override;
    -
    22 void buildModel(const torch::Tensor& weights) override;
    -
    23 };
    -
    -
    24}
    -
    25#endif // !AODELD_H
    - - - -
    -
    - - - - diff --git a/docs/manual/_base_classifier_8h_source.html b/docs/manual/_base_classifier_8h_source.html deleted file mode 100644 index e27c0b8..0000000 --- a/docs/manual/_base_classifier_8h_source.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/BaseClassifier.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BaseClassifier.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#pragma once
    -
    8#include <vector>
    -
    9#include <torch/torch.h>
    -
    10#include <nlohmann/json.hpp>
    -
    11namespace bayesnet {
    -
    12 enum status_t { NORMAL, WARNING, ERROR };
    -
    - -
    14 public:
    -
    15 // X is nxm std::vector, y is nx1 std::vector
    -
    16 virtual BaseClassifier& fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -
    17 // X is nxm tensor, y is nx1 tensor
    -
    18 virtual BaseClassifier& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -
    19 virtual BaseClassifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -
    20 virtual BaseClassifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights) = 0;
    -
    21 virtual ~BaseClassifier() = default;
    -
    22 torch::Tensor virtual predict(torch::Tensor& X) = 0;
    -
    23 std::vector<int> virtual predict(std::vector<std::vector<int >>& X) = 0;
    -
    24 torch::Tensor virtual predict_proba(torch::Tensor& X) = 0;
    -
    25 std::vector<std::vector<double>> virtual predict_proba(std::vector<std::vector<int >>& X) = 0;
    -
    26 status_t virtual getStatus() const = 0;
    -
    27 float virtual score(std::vector<std::vector<int>>& X, std::vector<int>& y) = 0;
    -
    28 float virtual score(torch::Tensor& X, torch::Tensor& y) = 0;
    -
    29 int virtual getNumberOfNodes()const = 0;
    -
    30 int virtual getNumberOfEdges()const = 0;
    -
    31 int virtual getNumberOfStates() const = 0;
    -
    32 int virtual getClassNumStates() const = 0;
    -
    33 std::vector<std::string> virtual show() const = 0;
    -
    34 std::vector<std::string> virtual graph(const std::string& title = "") const = 0;
    -
    35 virtual std::string getVersion() = 0;
    -
    36 std::vector<std::string> virtual topological_order() = 0;
    -
    37 std::vector<std::string> virtual getNotes() const = 0;
    -
    38 std::string virtual dump_cpt()const = 0;
    -
    39 virtual void setHyperparameters(const nlohmann::json& hyperparameters) = 0;
    -
    40 std::vector<std::string>& getValidHyperparameters() { return validHyperparameters; }
    -
    41 protected:
    -
    42 virtual void trainModel(const torch::Tensor& weights) = 0;
    -
    43 std::vector<std::string> validHyperparameters;
    -
    44 };
    -
    -
    45}
    - -
    -
    - - - - diff --git a/docs/manual/_boost_8cc_source.html b/docs/manual/_boost_8cc_source.html deleted file mode 100644 index a6fda15..0000000 --- a/docs/manual/_boost_8cc_source.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Boost.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Boost.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6#include <folding.hpp>
    -
    7#include "bayesnet/feature_selection/CFS.h"
    -
    8#include "bayesnet/feature_selection/FCBF.h"
    -
    9#include "bayesnet/feature_selection/IWSS.h"
    -
    10#include "Boost.h"
    -
    11
    -
    12namespace bayesnet {
    -
    13 Boost::Boost(bool predict_voting) : Ensemble(predict_voting)
    -
    14 {
    -
    15 validHyperparameters = { "order", "convergence", "convergence_best", "bisection", "threshold", "maxTolerance",
    -
    16 "predict_voting", "select_features", "block_update" };
    -
    17 }
    -
    18 void Boost::setHyperparameters(const nlohmann::json& hyperparameters_)
    -
    19 {
    -
    20 auto hyperparameters = hyperparameters_;
    -
    21 if (hyperparameters.contains("order")) {
    -
    22 std::vector<std::string> algos = { Orders.ASC, Orders.DESC, Orders.RAND };
    -
    23 order_algorithm = hyperparameters["order"];
    -
    24 if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) {
    -
    25 throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]");
    -
    26 }
    -
    27 hyperparameters.erase("order");
    -
    28 }
    -
    29 if (hyperparameters.contains("convergence")) {
    -
    30 convergence = hyperparameters["convergence"];
    -
    31 hyperparameters.erase("convergence");
    -
    32 }
    -
    33 if (hyperparameters.contains("convergence_best")) {
    -
    34 convergence_best = hyperparameters["convergence_best"];
    -
    35 hyperparameters.erase("convergence_best");
    -
    36 }
    -
    37 if (hyperparameters.contains("bisection")) {
    -
    38 bisection = hyperparameters["bisection"];
    -
    39 hyperparameters.erase("bisection");
    -
    40 }
    -
    41 if (hyperparameters.contains("threshold")) {
    -
    42 threshold = hyperparameters["threshold"];
    -
    43 hyperparameters.erase("threshold");
    -
    44 }
    -
    45 if (hyperparameters.contains("maxTolerance")) {
    -
    46 maxTolerance = hyperparameters["maxTolerance"];
    -
    47 if (maxTolerance < 1 || maxTolerance > 4)
    -
    48 throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]");
    -
    49 hyperparameters.erase("maxTolerance");
    -
    50 }
    -
    51 if (hyperparameters.contains("predict_voting")) {
    -
    52 predict_voting = hyperparameters["predict_voting"];
    -
    53 hyperparameters.erase("predict_voting");
    -
    54 }
    -
    55 if (hyperparameters.contains("select_features")) {
    -
    56 auto selectedAlgorithm = hyperparameters["select_features"];
    -
    57 std::vector<std::string> algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF };
    -
    58 selectFeatures = true;
    -
    59 select_features_algorithm = selectedAlgorithm;
    -
    60 if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) {
    -
    61 throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]");
    -
    62 }
    -
    63 hyperparameters.erase("select_features");
    -
    64 }
    -
    65 if (hyperparameters.contains("block_update")) {
    -
    66 block_update = hyperparameters["block_update"];
    -
    67 hyperparameters.erase("block_update");
    -
    68 }
    -
    69 Classifier::setHyperparameters(hyperparameters);
    -
    70 }
    -
    71 void Boost::buildModel(const torch::Tensor& weights)
    -
    72 {
    -
    73 // Models shall be built in trainModel
    -
    74 models.clear();
    -
    75 significanceModels.clear();
    -
    76 n_models = 0;
    -
    77 // Prepare the validation dataset
    -
    78 auto y_ = dataset.index({ -1, "..." });
    -
    79 if (convergence) {
    -
    80 // Prepare train & validation sets from train data
    -
    81 auto fold = folding::StratifiedKFold(5, y_, 271);
    -
    82 auto [train, test] = fold.getFold(0);
    -
    83 auto train_t = torch::tensor(train);
    -
    84 auto test_t = torch::tensor(test);
    -
    85 // Get train and validation sets
    -
    86 X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t });
    -
    87 y_train = dataset.index({ -1, train_t });
    -
    88 X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t });
    -
    89 y_test = dataset.index({ -1, test_t });
    -
    90 dataset = X_train;
    -
    91 m = X_train.size(1);
    -
    92 auto n_classes = states.at(className).size();
    -
    93 // Build dataset with train data
    -
    94 buildDataset(y_train);
    -
    95 metrics = Metrics(dataset, features, className, n_classes);
    -
    96 } else {
    -
    97 // Use all data to train
    -
    98 X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." });
    -
    99 y_train = y_;
    -
    100 }
    -
    101 }
    -
    102 std::vector<int> Boost::featureSelection(torch::Tensor& weights_)
    -
    103 {
    -
    104 int maxFeatures = 0;
    -
    105 if (select_features_algorithm == SelectFeatures.CFS) {
    -
    106 featureSelector = new CFS(dataset, features, className, maxFeatures, states.at(className).size(), weights_);
    -
    107 } else if (select_features_algorithm == SelectFeatures.IWSS) {
    -
    108 if (threshold < 0 || threshold >0.5) {
    -
    109 throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.IWSS + " [0, 0.5]");
    -
    110 }
    -
    111 featureSelector = new IWSS(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold);
    -
    112 } else if (select_features_algorithm == SelectFeatures.FCBF) {
    -
    113 if (threshold < 1e-7 || threshold > 1) {
    -
    114 throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.FCBF + " [1e-7, 1]");
    -
    115 }
    -
    116 featureSelector = new FCBF(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold);
    -
    117 }
    -
    118 featureSelector->fit();
    -
    119 auto featuresUsed = featureSelector->getFeatures();
    -
    120 delete featureSelector;
    -
    121 return featuresUsed;
    -
    122 }
    -
    123 std::tuple<torch::Tensor&, double, bool> Boost::update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights)
    -
    124 {
    -
    125 bool terminate = false;
    -
    126 double alpha_t = 0;
    -
    127 auto mask_wrong = ypred != ytrain;
    -
    128 auto mask_right = ypred == ytrain;
    -
    129 auto masked_weights = weights * mask_wrong.to(weights.dtype());
    -
    130 double epsilon_t = masked_weights.sum().item<double>();
    -
    131 if (epsilon_t > 0.5) {
    -
    132 // Inverse the weights policy (plot ln(wt))
    -
    133 // "In each round of AdaBoost, there is a sanity check to ensure that the current base
    -
    134 // learner is better than random guess" (Zhi-Hua Zhou, 2012)
    -
    135 terminate = true;
    -
    136 } else {
    -
    137 double wt = (1 - epsilon_t) / epsilon_t;
    -
    138 alpha_t = epsilon_t == 0 ? 1 : 0.5 * log(wt);
    -
    139 // Step 3.2: Update weights for next classifier
    -
    140 // Step 3.2.1: Update weights of wrong samples
    -
    141 weights += mask_wrong.to(weights.dtype()) * exp(alpha_t) * weights;
    -
    142 // Step 3.2.2: Update weights of right samples
    -
    143 weights += mask_right.to(weights.dtype()) * exp(-alpha_t) * weights;
    -
    144 // Step 3.3: Normalise the weights
    -
    145 double totalWeights = torch::sum(weights).item<double>();
    -
    146 weights = weights / totalWeights;
    -
    147 }
    -
    148 return { weights, alpha_t, terminate };
    -
    149 }
    -
    150 std::tuple<torch::Tensor&, double, bool> Boost::update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights)
    -
    151 {
    -
    152 /* Update Block algorithm
    -
    153 k = # of models in block
    -
    154 n_models = # of models in ensemble to make predictions
    -
    155 n_models_bak = # models saved
    -
    156 models = vector of models to make predictions
    -
    157 models_bak = models not used to make predictions
    -
    158 significances_bak = backup of significances vector
    -
    159
    -
    160 Case list
    -
    161 A) k = 1, n_models = 1 => n = 0 , n_models = n + k
    -
    162 B) k = 1, n_models = n + 1 => n_models = n + k
    -
    163 C) k > 1, n_models = k + 1 => n= 1, n_models = n + k
    -
    164 D) k > 1, n_models = k => n = 0, n_models = n + k
    -
    165 E) k > 1, n_models = k + n => n_models = n + k
    -
    166
    -
    167 A, D) n=0, k > 0, n_models == k
    -
    168 1. n_models_bak <- n_models
    -
    169 2. significances_bak <- significances
    -
    170 3. significances = vector(k, 1)
    -
    171 4. Don’t move any classifiers out of models
    -
    172 5. n_models <- k
    -
    173 6. Make prediction, compute alpha, update weights
    -
    174 7. Don’t restore any classifiers to models
    -
    175 8. significances <- significances_bak
    -
    176 9. Update last k significances
    -
    177 10. n_models <- n_models_bak
    -
    178
    -
    179 B, C, E) n > 0, k > 0, n_models == n + k
    -
    180 1. n_models_bak <- n_models
    -
    181 2. significances_bak <- significances
    -
    182 3. significances = vector(k, 1)
    -
    183 4. Move first n classifiers to models_bak
    -
    184 5. n_models <- k
    -
    185 6. Make prediction, compute alpha, update weights
    -
    186 7. Insert classifiers in models_bak to be the first n models
    -
    187 8. significances <- significances_bak
    -
    188 9. Update last k significances
    -
    189 10. n_models <- n_models_bak
    -
    190 */
    -
    191 //
    -
    192 // Make predict with only the last k models
    -
    193 //
    -
    194 std::unique_ptr<Classifier> model;
    -
    195 std::vector<std::unique_ptr<Classifier>> models_bak;
    -
    196 // 1. n_models_bak <- n_models 2. significances_bak <- significances
    -
    197 auto significance_bak = significanceModels;
    -
    198 auto n_models_bak = n_models;
    -
    199 // 3. significances = vector(k, 1)
    -
    200 significanceModels = std::vector<double>(k, 1.0);
    -
    201 // 4. Move first n classifiers to models_bak
    -
    202 // backup the first n_models - k models (if n_models == k, don't backup any)
    -
    203 for (int i = 0; i < n_models - k; ++i) {
    -
    204 model = std::move(models[0]);
    -
    205 models.erase(models.begin());
    -
    206 models_bak.push_back(std::move(model));
    -
    207 }
    -
    208 assert(models.size() == k);
    -
    209 // 5. n_models <- k
    -
    210 n_models = k;
    -
    211 // 6. Make prediction, compute alpha, update weights
    -
    212 auto ypred = predict(X_train);
    -
    213 //
    -
    214 // Update weights
    -
    215 //
    -
    216 double alpha_t;
    -
    217 bool terminate;
    -
    218 std::tie(weights, alpha_t, terminate) = update_weights(y_train, ypred, weights);
    -
    219 //
    -
    220 // Restore the models if needed
    -
    221 //
    -
    222 // 7. Insert classifiers in models_bak to be the first n models
    -
    223 // if n_models_bak == k, don't restore any, because none of them were moved
    -
    224 if (k != n_models_bak) {
    -
    225 // Insert in the same order as they were extracted
    -
    226 int bak_size = models_bak.size();
    -
    227 for (int i = 0; i < bak_size; ++i) {
    -
    228 model = std::move(models_bak[bak_size - 1 - i]);
    -
    229 models_bak.erase(models_bak.end() - 1);
    -
    230 models.insert(models.begin(), std::move(model));
    -
    231 }
    -
    232 }
    -
    233 // 8. significances <- significances_bak
    -
    234 significanceModels = significance_bak;
    -
    235 //
    -
    236 // Update the significance of the last k models
    -
    237 //
    -
    238 // 9. Update last k significances
    -
    239 for (int i = 0; i < k; ++i) {
    -
    240 significanceModels[n_models_bak - k + i] = alpha_t;
    -
    241 }
    -
    242 // 10. n_models <- n_models_bak
    -
    243 n_models = n_models_bak;
    -
    244 return { weights, alpha_t, terminate };
    -
    245 }
    -
    246}
    -
    -
    - - - - diff --git a/docs/manual/_boost_8h_source.html b/docs/manual/_boost_8h_source.html deleted file mode 100644 index eb96a69..0000000 --- a/docs/manual/_boost_8h_source.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Boost.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Boost.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef BOOST_H
    -
    8#define BOOST_H
    -
    9#include <string>
    -
    10#include <tuple>
    -
    11#include <vector>
    -
    12#include <nlohmann/json.hpp>
    -
    13#include <torch/torch.h>
    -
    14#include "Ensemble.h"
    -
    15#include "bayesnet/feature_selection/FeatureSelect.h"
    -
    16namespace bayesnet {
    -
    17 const struct {
    -
    18 std::string CFS = "CFS";
    -
    19 std::string FCBF = "FCBF";
    -
    20 std::string IWSS = "IWSS";
    -
    21 }SelectFeatures;
    -
    22 const struct {
    -
    23 std::string ASC = "asc";
    -
    24 std::string DESC = "desc";
    -
    25 std::string RAND = "rand";
    -
    26 }Orders;
    -
    -
    27 class Boost : public Ensemble {
    -
    28 public:
    -
    29 explicit Boost(bool predict_voting = false);
    -
    30 virtual ~Boost() = default;
    -
    31 void setHyperparameters(const nlohmann::json& hyperparameters_) override;
    -
    32 protected:
    -
    33 std::vector<int> featureSelection(torch::Tensor& weights_);
    -
    34 void buildModel(const torch::Tensor& weights) override;
    -
    35 std::tuple<torch::Tensor&, double, bool> update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights);
    -
    36 std::tuple<torch::Tensor&, double, bool> update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights);
    -
    37 torch::Tensor X_train, y_train, X_test, y_test;
    -
    38 // Hyperparameters
    -
    39 bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble
    -
    40 int maxTolerance = 3;
    -
    41 std::string order_algorithm; // order to process the KBest features asc, desc, rand
    -
    42 bool convergence = true; //if true, stop when the model does not improve
    -
    43 bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy
    -
    44 bool selectFeatures = false; // if true, use feature selection
    -
    45 std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm
    -
    46 FeatureSelect* featureSelector = nullptr;
    -
    47 double threshold = -1;
    -
    48 bool block_update = false;
    -
    49
    -
    50 };
    -
    -
    51}
    -
    52#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_boost_a2_d_e_8cc_source.html b/docs/manual/_boost_a2_d_e_8cc_source.html deleted file mode 100644 index 70825be..0000000 --- a/docs/manual/_boost_a2_d_e_8cc_source.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostA2DE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BoostA2DE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include <set>
    -
    8#include <functional>
    -
    9#include <limits.h>
    -
    10#include <tuple>
    -
    11#include <folding.hpp>
    -
    12#include "bayesnet/feature_selection/CFS.h"
    -
    13#include "bayesnet/feature_selection/FCBF.h"
    -
    14#include "bayesnet/feature_selection/IWSS.h"
    -
    15#include "BoostA2DE.h"
    -
    16
    -
    17namespace bayesnet {
    -
    18
    -
    19 BoostA2DE::BoostA2DE(bool predict_voting) : Boost(predict_voting)
    -
    20 {
    -
    21 }
    -
    22 std::vector<int> BoostA2DE::initializeModels()
    -
    23 {
    -
    24 torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -
    25 std::vector<int> featuresSelected = featureSelection(weights_);
    -
    26 if (featuresSelected.size() < 2) {
    -
    27 notes.push_back("No features selected in initialization");
    -
    28 status = ERROR;
    -
    29 return std::vector<int>();
    -
    30 }
    -
    31 for (int i = 0; i < featuresSelected.size() - 1; i++) {
    -
    32 for (int j = i + 1; j < featuresSelected.size(); j++) {
    -
    33 auto parents = { featuresSelected[i], featuresSelected[j] };
    -
    34 std::unique_ptr<Classifier> model = std::make_unique<SPnDE>(parents);
    -
    35 model->fit(dataset, features, className, states, weights_);
    -
    36 models.push_back(std::move(model));
    -
    37 significanceModels.push_back(1.0); // They will be updated later in trainModel
    -
    38 n_models++;
    -
    39 }
    -
    40 }
    -
    41 notes.push_back("Used features in initialization: " + std::to_string(featuresSelected.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm);
    -
    42 return featuresSelected;
    -
    43 }
    -
    44 void BoostA2DE::trainModel(const torch::Tensor& weights)
    -
    45 {
    -
    46 //
    -
    47 // Logging setup
    -
    48 //
    -
    49 // loguru::set_thread_name("BoostA2DE");
    -
    50 // loguru::g_stderr_verbosity = loguru::Verbosity_OFF;
    -
    51 // loguru::add_file("boostA2DE.log", loguru::Truncate, loguru::Verbosity_MAX);
    -
    52
    -
    53 // Algorithm based on the adaboost algorithm for classification
    -
    54 // as explained in Ensemble methods (Zhi-Hua Zhou, 2012)
    -
    55 fitted = true;
    -
    56 double alpha_t = 0;
    -
    57 torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -
    58 bool finished = false;
    -
    59 std::vector<int> featuresUsed;
    -
    60 if (selectFeatures) {
    -
    61 featuresUsed = initializeModels();
    -
    62 auto ypred = predict(X_train);
    -
    63 std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -
    64 // Update significance of the models
    -
    65 for (int i = 0; i < n_models; ++i) {
    -
    66 significanceModels[i] = alpha_t;
    -
    67 }
    -
    68 if (finished) {
    -
    69 return;
    -
    70 }
    -
    71 }
    -
    72 int numItemsPack = 0; // The counter of the models inserted in the current pack
    -
    73 // Variables to control the accuracy finish condition
    -
    74 double priorAccuracy = 0.0;
    -
    75 double improvement = 1.0;
    -
    76 double convergence_threshold = 1e-4;
    -
    77 int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold
    -
    78 // Step 0: Set the finish condition
    -
    79 // epsilon sub t > 0.5 => inverse the weights policy
    -
    80 // validation error is not decreasing
    -
    81 // run out of features
    -
    82 bool ascending = order_algorithm == Orders.ASC;
    -
    83 std::mt19937 g{ 173 };
    -
    84 std::vector<std::pair<int, int>> pairSelection;
    -
    85 while (!finished) {
    -
    86 // Step 1: Build ranking with mutual information
    -
    87 pairSelection = metrics.SelectKPairs(weights_, featuresUsed, ascending, 0); // Get all the pairs sorted
    -
    88 if (order_algorithm == Orders.RAND) {
    -
    89 std::shuffle(pairSelection.begin(), pairSelection.end(), g);
    -
    90 }
    -
    91 int k = bisection ? pow(2, tolerance) : 1;
    -
    92 int counter = 0; // The model counter of the current pack
    -
    93 // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size());
    -
    94 while (counter++ < k && pairSelection.size() > 0) {
    -
    95 auto feature_pair = pairSelection[0];
    -
    96 pairSelection.erase(pairSelection.begin());
    -
    97 std::unique_ptr<Classifier> model;
    -
    98 model = std::make_unique<SPnDE>(std::vector<int>({ feature_pair.first, feature_pair.second }));
    -
    99 model->fit(dataset, features, className, states, weights_);
    -
    100 alpha_t = 0.0;
    -
    101 if (!block_update) {
    -
    102 auto ypred = model->predict(X_train);
    -
    103 // Step 3.1: Compute the classifier amout of say
    -
    104 std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -
    105 }
    -
    106 // Step 3.4: Store classifier and its accuracy to weigh its future vote
    -
    107 numItemsPack++;
    -
    108 models.push_back(std::move(model));
    -
    109 significanceModels.push_back(alpha_t);
    -
    110 n_models++;
    -
    111 // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size());
    -
    112 }
    -
    113 if (block_update) {
    -
    114 std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_);
    -
    115 }
    -
    116 if (convergence && !finished) {
    -
    117 auto y_val_predict = predict(X_test);
    -
    118 double accuracy = (y_val_predict == y_test).sum().item<double>() / (double)y_test.size(0);
    -
    119 if (priorAccuracy == 0) {
    -
    120 priorAccuracy = accuracy;
    -
    121 } else {
    -
    122 improvement = accuracy - priorAccuracy;
    -
    123 }
    -
    124 if (improvement < convergence_threshold) {
    -
    125 // VLOG_SCOPE_F(3, " (improvement<threshold) tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -
    126 tolerance++;
    -
    127 } else {
    -
    128 // VLOG_SCOPE_F(3, "* (improvement>=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -
    129 tolerance = 0; // Reset the counter if the model performs better
    -
    130 numItemsPack = 0;
    -
    131 }
    -
    132 if (convergence_best) {
    -
    133 // Keep the best accuracy until now as the prior accuracy
    -
    134 priorAccuracy = std::max(accuracy, priorAccuracy);
    -
    135 } else {
    -
    136 // Keep the last accuray obtained as the prior accuracy
    -
    137 priorAccuracy = accuracy;
    -
    138 }
    -
    139 }
    -
    140 // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size());
    -
    141 finished = finished || tolerance > maxTolerance || pairSelection.size() == 0;
    -
    142 }
    -
    143 if (tolerance > maxTolerance) {
    -
    144 if (numItemsPack < n_models) {
    -
    145 notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated");
    -
    146 // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models);
    -
    147 for (int i = 0; i < numItemsPack; ++i) {
    -
    148 significanceModels.pop_back();
    -
    149 models.pop_back();
    -
    150 n_models--;
    -
    151 }
    -
    152 } else {
    -
    153 notes.push_back("Convergence threshold reached & 0 models eliminated");
    -
    154 // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack);
    -
    155 }
    -
    156 }
    -
    157 if (pairSelection.size() > 0) {
    -
    158 notes.push_back("Pairs not used in train: " + std::to_string(pairSelection.size()));
    -
    159 status = WARNING;
    -
    160 }
    -
    161 notes.push_back("Number of models: " + std::to_string(n_models));
    -
    162 }
    -
    163 std::vector<std::string> BoostA2DE::graph(const std::string& title) const
    -
    164 {
    -
    165 return Ensemble::graph(title);
    -
    166 }
    -
    167}
    -
    -
    - - - - diff --git a/docs/manual/_boost_a2_d_e_8h_source.html b/docs/manual/_boost_a2_d_e_8h_source.html deleted file mode 100644 index cf8b626..0000000 --- a/docs/manual/_boost_a2_d_e_8h_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostA2DE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BoostA2DE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef BOOSTA2DE_H
    -
    8#define BOOSTA2DE_H
    -
    9#include <string>
    -
    10#include <vector>
    -
    11#include "bayesnet/classifiers/SPnDE.h"
    -
    12#include "Boost.h"
    -
    13namespace bayesnet {
    -
    -
    14 class BoostA2DE : public Boost {
    -
    15 public:
    -
    16 explicit BoostA2DE(bool predict_voting = false);
    -
    17 virtual ~BoostA2DE() = default;
    -
    18 std::vector<std::string> graph(const std::string& title = "BoostA2DE") const override;
    -
    19 protected:
    -
    20 void trainModel(const torch::Tensor& weights) override;
    -
    21 private:
    -
    22 std::vector<int> initializeModels();
    -
    23 };
    -
    -
    24}
    -
    25#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_boost_a_o_d_e_8cc_source.html b/docs/manual/_boost_a_o_d_e_8cc_source.html deleted file mode 100644 index c22d8e9..0000000 --- a/docs/manual/_boost_a_o_d_e_8cc_source.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostAODE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BoostAODE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include <random>
    -
    8#include <set>
    -
    9#include <functional>
    -
    10#include <limits.h>
    -
    11#include <tuple>
    -
    12#include "BoostAODE.h"
    -
    13
    -
    14namespace bayesnet {
    -
    15
    -
    16 BoostAODE::BoostAODE(bool predict_voting) : Boost(predict_voting)
    -
    17 {
    -
    18 }
    -
    19 std::vector<int> BoostAODE::initializeModels()
    -
    20 {
    -
    21 torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -
    22 std::vector<int> featuresSelected = featureSelection(weights_);
    -
    23 for (const int& feature : featuresSelected) {
    -
    24 std::unique_ptr<Classifier> model = std::make_unique<SPODE>(feature);
    -
    25 model->fit(dataset, features, className, states, weights_);
    -
    26 models.push_back(std::move(model));
    -
    27 significanceModels.push_back(1.0); // They will be updated later in trainModel
    -
    28 n_models++;
    -
    29 }
    -
    30 notes.push_back("Used features in initialization: " + std::to_string(featuresSelected.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm);
    -
    31 return featuresSelected;
    -
    32 }
    -
    33 void BoostAODE::trainModel(const torch::Tensor& weights)
    -
    34 {
    -
    35 //
    -
    36 // Logging setup
    -
    37 //
    -
    38 // loguru::set_thread_name("BoostAODE");
    -
    39 // loguru::g_stderr_verbosity = loguru::Verbosity_OFF;
    -
    40 // loguru::add_file("boostAODE.log", loguru::Truncate, loguru::Verbosity_MAX);
    -
    41
    -
    42 // Algorithm based on the adaboost algorithm for classification
    -
    43 // as explained in Ensemble methods (Zhi-Hua Zhou, 2012)
    -
    44 fitted = true;
    -
    45 double alpha_t = 0;
    -
    46 torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -
    47 bool finished = false;
    -
    48 std::vector<int> featuresUsed;
    -
    49 if (selectFeatures) {
    -
    50 featuresUsed = initializeModels();
    -
    51 auto ypred = predict(X_train);
    -
    52 std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -
    53 // Update significance of the models
    -
    54 for (int i = 0; i < n_models; ++i) {
    -
    55 significanceModels[i] = alpha_t;
    -
    56 }
    -
    57 if (finished) {
    -
    58 return;
    -
    59 }
    -
    60 }
    -
    61 int numItemsPack = 0; // The counter of the models inserted in the current pack
    -
    62 // Variables to control the accuracy finish condition
    -
    63 double priorAccuracy = 0.0;
    -
    64 double improvement = 1.0;
    -
    65 double convergence_threshold = 1e-4;
    -
    66 int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold
    -
    67 // Step 0: Set the finish condition
    -
    68 // epsilon sub t > 0.5 => inverse the weights policy
    -
    69 // validation error is not decreasing
    -
    70 // run out of features
    -
    71 bool ascending = order_algorithm == Orders.ASC;
    -
    72 std::mt19937 g{ 173 };
    -
    73 while (!finished) {
    -
    74 // Step 1: Build ranking with mutual information
    -
    75 auto featureSelection = metrics.SelectKBestWeighted(weights_, ascending, n); // Get all the features sorted
    -
    76 if (order_algorithm == Orders.RAND) {
    -
    77 std::shuffle(featureSelection.begin(), featureSelection.end(), g);
    -
    78 }
    -
    79 // Remove used features
    -
    80 featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x)
    -
    81 { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}),
    -
    82 end(featureSelection)
    -
    83 );
    -
    84 int k = bisection ? pow(2, tolerance) : 1;
    -
    85 int counter = 0; // The model counter of the current pack
    -
    86 // VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size());
    -
    87 while (counter++ < k && featureSelection.size() > 0) {
    -
    88 auto feature = featureSelection[0];
    -
    89 featureSelection.erase(featureSelection.begin());
    -
    90 std::unique_ptr<Classifier> model;
    -
    91 model = std::make_unique<SPODE>(feature);
    -
    92 model->fit(dataset, features, className, states, weights_);
    -
    93 alpha_t = 0.0;
    -
    94 if (!block_update) {
    -
    95 auto ypred = model->predict(X_train);
    -
    96 // Step 3.1: Compute the classifier amout of say
    -
    97 std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -
    98 }
    -
    99 // Step 3.4: Store classifier and its accuracy to weigh its future vote
    -
    100 numItemsPack++;
    -
    101 featuresUsed.push_back(feature);
    -
    102 models.push_back(std::move(model));
    -
    103 significanceModels.push_back(alpha_t);
    -
    104 n_models++;
    -
    105 // VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size());
    -
    106 }
    -
    107 if (block_update) {
    -
    108 std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_);
    -
    109 }
    -
    110 if (convergence && !finished) {
    -
    111 auto y_val_predict = predict(X_test);
    -
    112 double accuracy = (y_val_predict == y_test).sum().item<double>() / (double)y_test.size(0);
    -
    113 if (priorAccuracy == 0) {
    -
    114 priorAccuracy = accuracy;
    -
    115 } else {
    -
    116 improvement = accuracy - priorAccuracy;
    -
    117 }
    -
    118 if (improvement < convergence_threshold) {
    -
    119 // VLOG_SCOPE_F(3, " (improvement<threshold) tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -
    120 tolerance++;
    -
    121 } else {
    -
    122 // VLOG_SCOPE_F(3, "* (improvement>=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -
    123 tolerance = 0; // Reset the counter if the model performs better
    -
    124 numItemsPack = 0;
    -
    125 }
    -
    126 if (convergence_best) {
    -
    127 // Keep the best accuracy until now as the prior accuracy
    -
    128 priorAccuracy = std::max(accuracy, priorAccuracy);
    -
    129 } else {
    -
    130 // Keep the last accuray obtained as the prior accuracy
    -
    131 priorAccuracy = accuracy;
    -
    132 }
    -
    133 }
    -
    134 // VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size());
    -
    135 finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size();
    -
    136 }
    -
    137 if (tolerance > maxTolerance) {
    -
    138 if (numItemsPack < n_models) {
    -
    139 notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated");
    -
    140 // VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models);
    -
    141 for (int i = 0; i < numItemsPack; ++i) {
    -
    142 significanceModels.pop_back();
    -
    143 models.pop_back();
    -
    144 n_models--;
    -
    145 }
    -
    146 } else {
    -
    147 notes.push_back("Convergence threshold reached & 0 models eliminated");
    -
    148 // VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack);
    -
    149 }
    -
    150 }
    -
    151 if (featuresUsed.size() != features.size()) {
    -
    152 notes.push_back("Used features in train: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size()));
    -
    153 status = WARNING;
    -
    154 }
    -
    155 notes.push_back("Number of models: " + std::to_string(n_models));
    -
    156 }
    -
    157 std::vector<std::string> BoostAODE::graph(const std::string& title) const
    -
    158 {
    -
    159 return Ensemble::graph(title);
    -
    160 }
    -
    161}
    -
    -
    - - - - diff --git a/docs/manual/_boost_a_o_d_e_8h_source.html b/docs/manual/_boost_a_o_d_e_8h_source.html deleted file mode 100644 index 7b04ec2..0000000 --- a/docs/manual/_boost_a_o_d_e_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostAODE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BoostAODE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef BOOSTAODE_H
    -
    8#define BOOSTAODE_H
    -
    9#include <string>
    -
    10#include <vector>
    -
    11#include "bayesnet/classifiers/SPODE.h"
    -
    12#include "Boost.h"
    -
    13
    -
    14namespace bayesnet {
    -
    -
    15 class BoostAODE : public Boost {
    -
    16 public:
    -
    17 explicit BoostAODE(bool predict_voting = false);
    -
    18 virtual ~BoostAODE() = default;
    -
    19 std::vector<std::string> graph(const std::string& title = "BoostAODE") const override;
    -
    20 protected:
    -
    21 void trainModel(const torch::Tensor& weights) override;
    -
    22 private:
    -
    23 std::vector<int> initializeModels();
    -
    24 };
    -
    -
    25}
    -
    26#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_classifier_8cc_source.html b/docs/manual/_classifier_8cc_source.html deleted file mode 100644 index 7d8cd8c..0000000 --- a/docs/manual/_classifier_8cc_source.html +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Classifier.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Classifier.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include <sstream>
    -
    8#include "bayesnet/utils/bayesnetUtils.h"
    -
    9#include "Classifier.h"
    -
    10
    -
    11namespace bayesnet {
    -
    12 Classifier::Classifier(Network model) : model(model), m(0), n(0), metrics(Metrics()), fitted(false) {}
    -
    13 const std::string CLASSIFIER_NOT_FITTED = "Classifier has not been fitted";
    -
    14 Classifier& Classifier::build(const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -
    15 {
    -
    16 this->features = features;
    -
    17 this->className = className;
    -
    18 this->states = states;
    -
    19 m = dataset.size(1);
    -
    20 n = features.size();
    -
    21 checkFitParameters();
    -
    22 auto n_classes = states.at(className).size();
    -
    23 metrics = Metrics(dataset, features, className, n_classes);
    -
    24 model.initialize();
    -
    25 buildModel(weights);
    -
    26 trainModel(weights);
    -
    27 fitted = true;
    -
    28 return *this;
    -
    29 }
    -
    30 void Classifier::buildDataset(torch::Tensor& ytmp)
    -
    31 {
    -
    32 try {
    -
    33 auto yresized = torch::transpose(ytmp.view({ ytmp.size(0), 1 }), 0, 1);
    -
    34 dataset = torch::cat({ dataset, yresized }, 0);
    -
    35 }
    -
    36 catch (const std::exception& e) {
    -
    37 std::stringstream oss;
    -
    38 oss << "* Error in X and y dimensions *\n";
    -
    39 oss << "X dimensions: " << dataset.sizes() << "\n";
    -
    40 oss << "y dimensions: " << ytmp.sizes();
    -
    41 throw std::runtime_error(oss.str());
    -
    42 }
    -
    43 }
    -
    44 void Classifier::trainModel(const torch::Tensor& weights)
    -
    45 {
    -
    46 model.fit(dataset, weights, features, className, states);
    -
    47 }
    -
    48 // X is nxm where n is the number of features and m the number of samples
    -
    49 Classifier& Classifier::fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -
    50 {
    -
    51 dataset = X;
    -
    52 buildDataset(y);
    -
    53 const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -
    54 return build(features, className, states, weights);
    -
    55 }
    -
    56 // X is nxm where n is the number of features and m the number of samples
    -
    57 Classifier& Classifier::fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -
    58 {
    -
    59 dataset = torch::zeros({ static_cast<int>(X.size()), static_cast<int>(X[0].size()) }, torch::kInt32);
    -
    60 for (int i = 0; i < X.size(); ++i) {
    -
    61 dataset.index_put_({ i, "..." }, torch::tensor(X[i], torch::kInt32));
    -
    62 }
    -
    63 auto ytmp = torch::tensor(y, torch::kInt32);
    -
    64 buildDataset(ytmp);
    -
    65 const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -
    66 return build(features, className, states, weights);
    -
    67 }
    -
    68 Classifier& Classifier::fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -
    69 {
    -
    70 this->dataset = dataset;
    -
    71 const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -
    72 return build(features, className, states, weights);
    -
    73 }
    -
    74 Classifier& Classifier::fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -
    75 {
    -
    76 this->dataset = dataset;
    -
    77 return build(features, className, states, weights);
    -
    78 }
    -
    79 void Classifier::checkFitParameters()
    -
    80 {
    -
    81 if (torch::is_floating_point(dataset)) {
    -
    82 throw std::invalid_argument("dataset (X, y) must be of type Integer");
    -
    83 }
    -
    84 if (dataset.size(0) - 1 != features.size()) {
    -
    85 throw std::invalid_argument("Classifier: X " + std::to_string(dataset.size(0) - 1) + " and features " + std::to_string(features.size()) + " must have the same number of features");
    -
    86 }
    -
    87 if (states.find(className) == states.end()) {
    -
    88 throw std::invalid_argument("class name not found in states");
    -
    89 }
    -
    90 for (auto feature : features) {
    -
    91 if (states.find(feature) == states.end()) {
    -
    92 throw std::invalid_argument("feature [" + feature + "] not found in states");
    -
    93 }
    -
    94 }
    -
    95 }
    -
    96 torch::Tensor Classifier::predict(torch::Tensor& X)
    -
    97 {
    -
    98 if (!fitted) {
    -
    99 throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -
    100 }
    -
    101 return model.predict(X);
    -
    102 }
    -
    103 std::vector<int> Classifier::predict(std::vector<std::vector<int>>& X)
    -
    104 {
    -
    105 if (!fitted) {
    -
    106 throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -
    107 }
    -
    108 auto m_ = X[0].size();
    -
    109 auto n_ = X.size();
    -
    110 std::vector<std::vector<int>> Xd(n_, std::vector<int>(m_, 0));
    -
    111 for (auto i = 0; i < n_; i++) {
    -
    112 Xd[i] = std::vector<int>(X[i].begin(), X[i].end());
    -
    113 }
    -
    114 auto yp = model.predict(Xd);
    -
    115 return yp;
    -
    116 }
    -
    117 torch::Tensor Classifier::predict_proba(torch::Tensor& X)
    -
    118 {
    -
    119 if (!fitted) {
    -
    120 throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -
    121 }
    -
    122 return model.predict_proba(X);
    -
    123 }
    -
    124 std::vector<std::vector<double>> Classifier::predict_proba(std::vector<std::vector<int>>& X)
    -
    125 {
    -
    126 if (!fitted) {
    -
    127 throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -
    128 }
    -
    129 auto m_ = X[0].size();
    -
    130 auto n_ = X.size();
    -
    131 std::vector<std::vector<int>> Xd(n_, std::vector<int>(m_, 0));
    -
    132 // Convert to nxm vector
    -
    133 for (auto i = 0; i < n_; i++) {
    -
    134 Xd[i] = std::vector<int>(X[i].begin(), X[i].end());
    -
    135 }
    -
    136 auto yp = model.predict_proba(Xd);
    -
    137 return yp;
    -
    138 }
    -
    139 float Classifier::score(torch::Tensor& X, torch::Tensor& y)
    -
    140 {
    -
    141 torch::Tensor y_pred = predict(X);
    -
    142 return (y_pred == y).sum().item<float>() / y.size(0);
    -
    143 }
    -
    144 float Classifier::score(std::vector<std::vector<int>>& X, std::vector<int>& y)
    -
    145 {
    -
    146 if (!fitted) {
    -
    147 throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -
    148 }
    -
    149 return model.score(X, y);
    -
    150 }
    -
    151 std::vector<std::string> Classifier::show() const
    -
    152 {
    -
    153 return model.show();
    -
    154 }
    -
    155 void Classifier::addNodes()
    -
    156 {
    -
    157 // Add all nodes to the network
    -
    158 for (const auto& feature : features) {
    -
    159 model.addNode(feature);
    -
    160 }
    -
    161 model.addNode(className);
    -
    162 }
    -
    163 int Classifier::getNumberOfNodes() const
    -
    164 {
    -
    165 // Features does not include class
    -
    166 return fitted ? model.getFeatures().size() : 0;
    -
    167 }
    -
    168 int Classifier::getNumberOfEdges() const
    -
    169 {
    -
    170 return fitted ? model.getNumEdges() : 0;
    -
    171 }
    -
    172 int Classifier::getNumberOfStates() const
    -
    173 {
    -
    174 return fitted ? model.getStates() : 0;
    -
    175 }
    -
    176 int Classifier::getClassNumStates() const
    -
    177 {
    -
    178 return fitted ? model.getClassNumStates() : 0;
    -
    179 }
    -
    180 std::vector<std::string> Classifier::topological_order()
    -
    181 {
    -
    182 return model.topological_sort();
    -
    183 }
    -
    184 std::string Classifier::dump_cpt() const
    -
    185 {
    -
    186 return model.dump_cpt();
    -
    187 }
    -
    188 void Classifier::setHyperparameters(const nlohmann::json& hyperparameters)
    -
    189 {
    -
    190 if (!hyperparameters.empty()) {
    -
    191 throw std::invalid_argument("Invalid hyperparameters" + hyperparameters.dump());
    -
    192 }
    -
    193 }
    -
    194}
    -
    -
    - - - - diff --git a/docs/manual/_classifier_8h_source.html b/docs/manual/_classifier_8h_source.html deleted file mode 100644 index 5b39713..0000000 --- a/docs/manual/_classifier_8h_source.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Classifier.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Classifier.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef CLASSIFIER_H
    -
    8#define CLASSIFIER_H
    -
    9#include <torch/torch.h>
    -
    10#include "bayesnet/utils/BayesMetrics.h"
    -
    11#include "bayesnet/network/Network.h"
    -
    12#include "bayesnet/BaseClassifier.h"
    -
    13
    -
    14namespace bayesnet {
    -
    -
    15 class Classifier : public BaseClassifier {
    -
    16 public:
    -
    17 Classifier(Network model);
    -
    18 virtual ~Classifier() = default;
    -
    19 Classifier& fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -
    20 Classifier& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -
    21 Classifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -
    22 Classifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights) override;
    -
    23 void addNodes();
    -
    24 int getNumberOfNodes() const override;
    -
    25 int getNumberOfEdges() const override;
    -
    26 int getNumberOfStates() const override;
    -
    27 int getClassNumStates() const override;
    -
    28 torch::Tensor predict(torch::Tensor& X) override;
    -
    29 std::vector<int> predict(std::vector<std::vector<int>>& X) override;
    -
    30 torch::Tensor predict_proba(torch::Tensor& X) override;
    -
    31 std::vector<std::vector<double>> predict_proba(std::vector<std::vector<int>>& X) override;
    -
    32 status_t getStatus() const override { return status; }
    -
    33 std::string getVersion() override { return { project_version.begin(), project_version.end() }; };
    -
    34 float score(torch::Tensor& X, torch::Tensor& y) override;
    -
    35 float score(std::vector<std::vector<int>>& X, std::vector<int>& y) override;
    -
    36 std::vector<std::string> show() const override;
    -
    37 std::vector<std::string> topological_order() override;
    -
    38 std::vector<std::string> getNotes() const override { return notes; }
    -
    39 std::string dump_cpt() const override;
    -
    40 void setHyperparameters(const nlohmann::json& hyperparameters) override; //For classifiers that don't have hyperparameters
    -
    41 protected:
    -
    42 bool fitted;
    -
    43 unsigned int m, n; // m: number of samples, n: number of features
    -
    44 Network model;
    -
    45 Metrics metrics;
    -
    46 std::vector<std::string> features;
    -
    47 std::string className;
    -
    48 std::map<std::string, std::vector<int>> states;
    -
    49 torch::Tensor dataset; // (n+1)xm tensor
    -
    50 status_t status = NORMAL;
    -
    51 std::vector<std::string> notes; // Used to store messages occurred during the fit process
    -
    52 void checkFitParameters();
    -
    53 virtual void buildModel(const torch::Tensor& weights) = 0;
    -
    54 void trainModel(const torch::Tensor& weights) override;
    -
    55 void buildDataset(torch::Tensor& y);
    -
    56 private:
    -
    57 Classifier& build(const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -
    58 };
    -
    -
    59}
    -
    60#endif
    -
    61
    -
    62
    -
    63
    -
    64
    -
    65
    - - - -
    -
    - - - - diff --git a/docs/manual/_ensemble_8cc_source.html b/docs/manual/_ensemble_8cc_source.html deleted file mode 100644 index 7cffac3..0000000 --- a/docs/manual/_ensemble_8cc_source.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Ensemble.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Ensemble.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "Ensemble.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10
    -
    11 Ensemble::Ensemble(bool predict_voting) : Classifier(Network()), n_models(0), predict_voting(predict_voting)
    -
    12 {
    -
    13
    -
    14 };
    -
    15 const std::string ENSEMBLE_NOT_FITTED = "Ensemble has not been fitted";
    -
    16 void Ensemble::trainModel(const torch::Tensor& weights)
    -
    17 {
    -
    18 n_models = models.size();
    -
    19 for (auto i = 0; i < n_models; ++i) {
    -
    20 // fit with std::vectors
    -
    21 models[i]->fit(dataset, features, className, states);
    -
    22 }
    -
    23 }
    -
    24 std::vector<int> Ensemble::compute_arg_max(std::vector<std::vector<double>>& X)
    -
    25 {
    -
    26 std::vector<int> y_pred;
    -
    27 for (auto i = 0; i < X.size(); ++i) {
    -
    28 auto max = std::max_element(X[i].begin(), X[i].end());
    -
    29 y_pred.push_back(std::distance(X[i].begin(), max));
    -
    30 }
    -
    31 return y_pred;
    -
    32 }
    -
    33 torch::Tensor Ensemble::compute_arg_max(torch::Tensor& X)
    -
    34 {
    -
    35 auto y_pred = torch::argmax(X, 1);
    -
    36 return y_pred;
    -
    37 }
    -
    38 torch::Tensor Ensemble::voting(torch::Tensor& votes)
    -
    39 {
    -
    40 // Convert m x n_models tensor to a m x n_class_states with voting probabilities
    -
    41 auto y_pred_ = votes.accessor<int, 2>();
    -
    42 std::vector<int> y_pred_final;
    -
    43 int numClasses = states.at(className).size();
    -
    44 // votes is m x n_models with the prediction of every model for each sample
    -
    45 auto result = torch::zeros({ votes.size(0), numClasses }, torch::kFloat32);
    -
    46 auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -
    47 for (int i = 0; i < votes.size(0); ++i) {
    -
    48 // n_votes store in each index (value of class) the significance added by each model
    -
    49 // i.e. n_votes[0] contains how much value has the value 0 of class. That value is generated by the models predictions
    -
    50 std::vector<double> n_votes(numClasses, 0.0);
    -
    51 for (int j = 0; j < n_models; ++j) {
    -
    52 n_votes[y_pred_[i][j]] += significanceModels.at(j);
    -
    53 }
    -
    54 result[i] = torch::tensor(n_votes);
    -
    55 }
    -
    56 // To only do one division and gain precision
    -
    57 result /= sum;
    -
    58 return result;
    -
    59 }
    -
    60 std::vector<std::vector<double>> Ensemble::predict_proba(std::vector<std::vector<int>>& X)
    -
    61 {
    -
    62 if (!fitted) {
    -
    63 throw std::logic_error(ENSEMBLE_NOT_FITTED);
    -
    64 }
    -
    65 return predict_voting ? predict_average_voting(X) : predict_average_proba(X);
    -
    66 }
    -
    67 torch::Tensor Ensemble::predict_proba(torch::Tensor& X)
    -
    68 {
    -
    69 if (!fitted) {
    -
    70 throw std::logic_error(ENSEMBLE_NOT_FITTED);
    -
    71 }
    -
    72 return predict_voting ? predict_average_voting(X) : predict_average_proba(X);
    -
    73 }
    -
    74 std::vector<int> Ensemble::predict(std::vector<std::vector<int>>& X)
    -
    75 {
    -
    76 auto res = predict_proba(X);
    -
    77 return compute_arg_max(res);
    -
    78 }
    -
    79 torch::Tensor Ensemble::predict(torch::Tensor& X)
    -
    80 {
    -
    81 auto res = predict_proba(X);
    -
    82 return compute_arg_max(res);
    -
    83 }
    -
    84 torch::Tensor Ensemble::predict_average_proba(torch::Tensor& X)
    -
    85 {
    -
    86 auto n_states = models[0]->getClassNumStates();
    -
    87 torch::Tensor y_pred = torch::zeros({ X.size(1), n_states }, torch::kFloat32);
    -
    88 auto threads{ std::vector<std::thread>() };
    -
    89 std::mutex mtx;
    -
    90 for (auto i = 0; i < n_models; ++i) {
    -
    91 threads.push_back(std::thread([&, i]() {
    -
    92 auto ypredict = models[i]->predict_proba(X);
    -
    93 std::lock_guard<std::mutex> lock(mtx);
    -
    94 y_pred += ypredict * significanceModels[i];
    -
    95 }));
    -
    96 }
    -
    97 for (auto& thread : threads) {
    -
    98 thread.join();
    -
    99 }
    -
    100 auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -
    101 y_pred /= sum;
    -
    102 return y_pred;
    -
    103 }
    -
    104 std::vector<std::vector<double>> Ensemble::predict_average_proba(std::vector<std::vector<int>>& X)
    -
    105 {
    -
    106 auto n_states = models[0]->getClassNumStates();
    -
    107 std::vector<std::vector<double>> y_pred(X[0].size(), std::vector<double>(n_states, 0.0));
    -
    108 auto threads{ std::vector<std::thread>() };
    -
    109 std::mutex mtx;
    -
    110 for (auto i = 0; i < n_models; ++i) {
    -
    111 threads.push_back(std::thread([&, i]() {
    -
    112 auto ypredict = models[i]->predict_proba(X);
    -
    113 assert(ypredict.size() == y_pred.size());
    -
    114 assert(ypredict[0].size() == y_pred[0].size());
    -
    115 std::lock_guard<std::mutex> lock(mtx);
    -
    116 // Multiply each prediction by the significance of the model and then add it to the final prediction
    -
    117 for (auto j = 0; j < ypredict.size(); ++j) {
    -
    118 std::transform(y_pred[j].begin(), y_pred[j].end(), ypredict[j].begin(), y_pred[j].begin(),
    -
    119 [significanceModels = significanceModels[i]](double x, double y) { return x + y * significanceModels; });
    -
    120 }
    -
    121 }));
    -
    122 }
    -
    123 for (auto& thread : threads) {
    -
    124 thread.join();
    -
    125 }
    -
    126 auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -
    127 //Divide each element of the prediction by the sum of the significances
    -
    128 for (auto j = 0; j < y_pred.size(); ++j) {
    -
    129 std::transform(y_pred[j].begin(), y_pred[j].end(), y_pred[j].begin(), [sum](double x) { return x / sum; });
    -
    130 }
    -
    131 return y_pred;
    -
    132 }
    -
    133 std::vector<std::vector<double>> Ensemble::predict_average_voting(std::vector<std::vector<int>>& X)
    -
    134 {
    -
    135 torch::Tensor Xt = bayesnet::vectorToTensor(X, false);
    -
    136 auto y_pred = predict_average_voting(Xt);
    -
    137 std::vector<std::vector<double>> result = tensorToVectorDouble(y_pred);
    -
    138 return result;
    -
    139 }
    -
    140 torch::Tensor Ensemble::predict_average_voting(torch::Tensor& X)
    -
    141 {
    -
    142 // Build a m x n_models tensor with the predictions of each model
    -
    143 torch::Tensor y_pred = torch::zeros({ X.size(1), n_models }, torch::kInt32);
    -
    144 auto threads{ std::vector<std::thread>() };
    -
    145 std::mutex mtx;
    -
    146 for (auto i = 0; i < n_models; ++i) {
    -
    147 threads.push_back(std::thread([&, i]() {
    -
    148 auto ypredict = models[i]->predict(X);
    -
    149 std::lock_guard<std::mutex> lock(mtx);
    -
    150 y_pred.index_put_({ "...", i }, ypredict);
    -
    151 }));
    -
    152 }
    -
    153 for (auto& thread : threads) {
    -
    154 thread.join();
    -
    155 }
    -
    156 return voting(y_pred);
    -
    157 }
    -
    158 float Ensemble::score(torch::Tensor& X, torch::Tensor& y)
    -
    159 {
    -
    160 auto y_pred = predict(X);
    -
    161 int correct = 0;
    -
    162 for (int i = 0; i < y_pred.size(0); ++i) {
    -
    163 if (y_pred[i].item<int>() == y[i].item<int>()) {
    -
    164 correct++;
    -
    165 }
    -
    166 }
    -
    167 return (double)correct / y_pred.size(0);
    -
    168 }
    -
    169 float Ensemble::score(std::vector<std::vector<int>>& X, std::vector<int>& y)
    -
    170 {
    -
    171 auto y_pred = predict(X);
    -
    172 int correct = 0;
    -
    173 for (int i = 0; i < y_pred.size(); ++i) {
    -
    174 if (y_pred[i] == y[i]) {
    -
    175 correct++;
    -
    176 }
    -
    177 }
    -
    178 return (double)correct / y_pred.size();
    -
    179 }
    -
    180 std::vector<std::string> Ensemble::show() const
    -
    181 {
    -
    182 auto result = std::vector<std::string>();
    -
    183 for (auto i = 0; i < n_models; ++i) {
    -
    184 auto res = models[i]->show();
    -
    185 result.insert(result.end(), res.begin(), res.end());
    -
    186 }
    -
    187 return result;
    -
    188 }
    -
    189 std::vector<std::string> Ensemble::graph(const std::string& title) const
    -
    190 {
    -
    191 auto result = std::vector<std::string>();
    -
    192 for (auto i = 0; i < n_models; ++i) {
    -
    193 auto res = models[i]->graph(title + "_" + std::to_string(i));
    -
    194 result.insert(result.end(), res.begin(), res.end());
    -
    195 }
    -
    196 return result;
    -
    197 }
    -
    198 int Ensemble::getNumberOfNodes() const
    -
    199 {
    -
    200 int nodes = 0;
    -
    201 for (auto i = 0; i < n_models; ++i) {
    -
    202 nodes += models[i]->getNumberOfNodes();
    -
    203 }
    -
    204 return nodes;
    -
    205 }
    -
    206 int Ensemble::getNumberOfEdges() const
    -
    207 {
    -
    208 int edges = 0;
    -
    209 for (auto i = 0; i < n_models; ++i) {
    -
    210 edges += models[i]->getNumberOfEdges();
    -
    211 }
    -
    212 return edges;
    -
    213 }
    -
    214 int Ensemble::getNumberOfStates() const
    -
    215 {
    -
    216 int nstates = 0;
    -
    217 for (auto i = 0; i < n_models; ++i) {
    -
    218 nstates += models[i]->getNumberOfStates();
    -
    219 }
    -
    220 return nstates;
    -
    221 }
    -
    222}
    -
    -
    - - - - diff --git a/docs/manual/_ensemble_8h_source.html b/docs/manual/_ensemble_8h_source.html deleted file mode 100644 index 716f7f8..0000000 --- a/docs/manual/_ensemble_8h_source.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Ensemble.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Ensemble.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef ENSEMBLE_H
    -
    8#define ENSEMBLE_H
    -
    9#include <torch/torch.h>
    -
    10#include "bayesnet/utils/BayesMetrics.h"
    -
    11#include "bayesnet/utils/bayesnetUtils.h"
    -
    12#include "bayesnet/classifiers/Classifier.h"
    -
    13
    -
    14namespace bayesnet {
    -
    -
    15 class Ensemble : public Classifier {
    -
    16 public:
    -
    17 Ensemble(bool predict_voting = true);
    -
    18 virtual ~Ensemble() = default;
    -
    19 torch::Tensor predict(torch::Tensor& X) override;
    -
    20 std::vector<int> predict(std::vector<std::vector<int>>& X) override;
    -
    21 torch::Tensor predict_proba(torch::Tensor& X) override;
    -
    22 std::vector<std::vector<double>> predict_proba(std::vector<std::vector<int>>& X) override;
    -
    23 float score(torch::Tensor& X, torch::Tensor& y) override;
    -
    24 float score(std::vector<std::vector<int>>& X, std::vector<int>& y) override;
    -
    25 int getNumberOfNodes() const override;
    -
    26 int getNumberOfEdges() const override;
    -
    27 int getNumberOfStates() const override;
    -
    28 std::vector<std::string> show() const override;
    -
    29 std::vector<std::string> graph(const std::string& title) const override;
    -
    30 std::vector<std::string> topological_order() override
    -
    31 {
    -
    32 return std::vector<std::string>();
    -
    33 }
    -
    34 std::string dump_cpt() const override
    -
    35 {
    -
    36 return "";
    -
    37 }
    -
    38 protected:
    -
    39 torch::Tensor predict_average_voting(torch::Tensor& X);
    -
    40 std::vector<std::vector<double>> predict_average_voting(std::vector<std::vector<int>>& X);
    -
    41 torch::Tensor predict_average_proba(torch::Tensor& X);
    -
    42 std::vector<std::vector<double>> predict_average_proba(std::vector<std::vector<int>>& X);
    -
    43 torch::Tensor compute_arg_max(torch::Tensor& X);
    -
    44 std::vector<int> compute_arg_max(std::vector<std::vector<double>>& X);
    -
    45 torch::Tensor voting(torch::Tensor& votes);
    -
    46 unsigned n_models;
    -
    47 std::vector<std::unique_ptr<Classifier>> models;
    -
    48 std::vector<double> significanceModels;
    -
    49 void trainModel(const torch::Tensor& weights) override;
    -
    50 bool predict_voting;
    -
    51 };
    -
    -
    52}
    -
    53#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_k_d_b_8cc_source.html b/docs/manual/_k_d_b_8cc_source.html deleted file mode 100644 index 0bf9c42..0000000 --- a/docs/manual/_k_d_b_8cc_source.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDB.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    KDB.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "KDB.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 KDB::KDB(int k, float theta) : Classifier(Network()), k(k), theta(theta)
    -
    11 {
    -
    12 validHyperparameters = { "k", "theta" };
    -
    13
    -
    14 }
    -
    15 void KDB::setHyperparameters(const nlohmann::json& hyperparameters_)
    -
    16 {
    -
    17 auto hyperparameters = hyperparameters_;
    -
    18 if (hyperparameters.contains("k")) {
    -
    19 k = hyperparameters["k"];
    -
    20 hyperparameters.erase("k");
    -
    21 }
    -
    22 if (hyperparameters.contains("theta")) {
    -
    23 theta = hyperparameters["theta"];
    -
    24 hyperparameters.erase("theta");
    -
    25 }
    -
    26 Classifier::setHyperparameters(hyperparameters);
    -
    27 }
    -
    28 void KDB::buildModel(const torch::Tensor& weights)
    -
    29 {
    -
    30 /*
    -
    31 1. For each feature Xi, compute mutual information, I(X;C),
    -
    32 where C is the class.
    -
    33 2. Compute class conditional mutual information I(Xi;XjIC), f or each
    -
    34 pair of features Xi and Xj, where i#j.
    -
    35 3. Let the used variable list, S, be empty.
    -
    36 4. Let the DAG network being constructed, BN, begin with a single
    -
    37 class node, C.
    -
    38 5. Repeat until S includes all domain features
    -
    39 5.1. Select feature Xmax which is not in S and has the largest value
    -
    40 I(Xmax;C).
    -
    41 5.2. Add a node to BN representing Xmax.
    -
    42 5.3. Add an arc from C to Xmax in BN.
    -
    43 5.4. Add m = min(lSl,/c) arcs from m distinct features Xj in S with
    -
    44 the highest value for I(Xmax;X,jC).
    -
    45 5.5. Add Xmax to S.
    -
    46 Compute the conditional probabilility infered by the structure of BN by
    -
    47 using counts from DB, and output BN.
    -
    48 */
    -
    49 // 1. For each feature Xi, compute mutual information, I(X;C),
    -
    50 // where C is the class.
    -
    51 addNodes();
    -
    52 const torch::Tensor& y = dataset.index({ -1, "..." });
    -
    53 std::vector<double> mi;
    -
    54 for (auto i = 0; i < features.size(); i++) {
    -
    55 torch::Tensor firstFeature = dataset.index({ i, "..." });
    -
    56 mi.push_back(metrics.mutualInformation(firstFeature, y, weights));
    -
    57 }
    -
    58 // 2. Compute class conditional mutual information I(Xi;XjIC), f or each
    -
    59 auto conditionalEdgeWeights = metrics.conditionalEdge(weights);
    -
    60 // 3. Let the used variable list, S, be empty.
    -
    61 std::vector<int> S;
    -
    62 // 4. Let the DAG network being constructed, BN, begin with a single
    -
    63 // class node, C.
    -
    64 // 5. Repeat until S includes all domain features
    -
    65 // 5.1. Select feature Xmax which is not in S and has the largest value
    -
    66 // I(Xmax;C).
    -
    67 auto order = argsort(mi);
    -
    68 for (auto idx : order) {
    -
    69 // 5.2. Add a node to BN representing Xmax.
    -
    70 // 5.3. Add an arc from C to Xmax in BN.
    -
    71 model.addEdge(className, features[idx]);
    -
    72 // 5.4. Add m = min(lSl,/c) arcs from m distinct features Xj in S with
    -
    73 // the highest value for I(Xmax;X,jC).
    -
    74 add_m_edges(idx, S, conditionalEdgeWeights);
    -
    75 // 5.5. Add Xmax to S.
    -
    76 S.push_back(idx);
    -
    77 }
    -
    78 }
    -
    79 void KDB::add_m_edges(int idx, std::vector<int>& S, torch::Tensor& weights)
    -
    80 {
    -
    81 auto n_edges = std::min(k, static_cast<int>(S.size()));
    -
    82 auto cond_w = clone(weights);
    -
    83 bool exit_cond = k == 0;
    -
    84 int num = 0;
    -
    85 while (!exit_cond) {
    -
    86 auto max_minfo = argmax(cond_w.index({ idx, "..." })).item<int>();
    -
    87 auto belongs = find(S.begin(), S.end(), max_minfo) != S.end();
    -
    88 if (belongs && cond_w.index({ idx, max_minfo }).item<float>() > theta) {
    -
    89 try {
    -
    90 model.addEdge(features[max_minfo], features[idx]);
    -
    91 num++;
    -
    92 }
    -
    93 catch (const std::invalid_argument& e) {
    -
    94 // Loops are not allowed
    -
    95 }
    -
    96 }
    -
    97 cond_w.index_put_({ idx, max_minfo }, -1);
    -
    98 auto candidates_mask = cond_w.index({ idx, "..." }).gt(theta);
    -
    99 auto candidates = candidates_mask.nonzero();
    -
    100 exit_cond = num == n_edges || candidates.size(0) == 0;
    -
    101 }
    -
    102 }
    -
    103 std::vector<std::string> KDB::graph(const std::string& title) const
    -
    104 {
    -
    105 std::string header{ title };
    -
    106 if (title == "KDB") {
    -
    107 header += " (k=" + std::to_string(k) + ", theta=" + std::to_string(theta) + ")";
    -
    108 }
    -
    109 return model.graph(header);
    -
    110 }
    -
    111}
    -
    -
    - - - - diff --git a/docs/manual/_k_d_b_8h_source.html b/docs/manual/_k_d_b_8h_source.html deleted file mode 100644 index 57a4623..0000000 --- a/docs/manual/_k_d_b_8h_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDB.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    KDB.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef KDB_H
    -
    8#define KDB_H
    -
    9#include <torch/torch.h>
    -
    10#include "bayesnet/utils/bayesnetUtils.h"
    -
    11#include "Classifier.h"
    -
    12namespace bayesnet {
    -
    -
    13 class KDB : public Classifier {
    -
    14 private:
    -
    15 int k;
    -
    16 float theta;
    -
    17 void add_m_edges(int idx, std::vector<int>& S, torch::Tensor& weights);
    -
    18 protected:
    -
    19 void buildModel(const torch::Tensor& weights) override;
    -
    20 public:
    -
    21 explicit KDB(int k, float theta = 0.03);
    -
    22 virtual ~KDB() = default;
    -
    23 void setHyperparameters(const nlohmann::json& hyperparameters_) override;
    -
    24 std::vector<std::string> graph(const std::string& name = "KDB") const override;
    -
    25 };
    -
    -
    26}
    -
    27#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_k_d_b_ld_8cc_source.html b/docs/manual/_k_d_b_ld_8cc_source.html deleted file mode 100644 index 4ee98ea..0000000 --- a/docs/manual/_k_d_b_ld_8cc_source.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDBLd.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    KDBLd.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "KDBLd.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 KDBLd::KDBLd(int k) : KDB(k), Proposal(dataset, features, className) {}
    -
    11 KDBLd& KDBLd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    12 {
    -
    13 checkInput(X_, y_);
    -
    14 features = features_;
    -
    15 className = className_;
    -
    16 Xf = X_;
    -
    17 y = y_;
    -
    18 // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -
    19 states = fit_local_discretization(y);
    -
    20 // We have discretized the input data
    -
    21 // 1st we need to fit the model to build the normal KDB structure, KDB::fit initializes the base Bayesian network
    -
    22 KDB::fit(dataset, features, className, states);
    -
    23 states = localDiscretizationProposal(states, model);
    -
    24 return *this;
    -
    25 }
    -
    26 torch::Tensor KDBLd::predict(torch::Tensor& X)
    -
    27 {
    -
    28 auto Xt = prepareX(X);
    -
    29 return KDB::predict(Xt);
    -
    30 }
    -
    31 std::vector<std::string> KDBLd::graph(const std::string& name) const
    -
    32 {
    -
    33 return KDB::graph(name);
    -
    34 }
    -
    35}
    -
    -
    - - - - diff --git a/docs/manual/_k_d_b_ld_8h_source.html b/docs/manual/_k_d_b_ld_8h_source.html deleted file mode 100644 index 3c26e26..0000000 --- a/docs/manual/_k_d_b_ld_8h_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDBLd.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    KDBLd.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef KDBLD_H
    -
    8#define KDBLD_H
    -
    9#include "Proposal.h"
    -
    10#include "KDB.h"
    -
    11
    -
    12namespace bayesnet {
    -
    -
    13 class KDBLd : public KDB, public Proposal {
    -
    14 private:
    -
    15 public:
    -
    16 explicit KDBLd(int k);
    -
    17 virtual ~KDBLd() = default;
    -
    18 KDBLd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -
    19 std::vector<std::string> graph(const std::string& name = "KDB") const override;
    -
    20 torch::Tensor predict(torch::Tensor& X) override;
    -
    21 static inline std::string version() { return "0.0.1"; };
    -
    22 };
    -
    -
    23}
    -
    24#endif // !KDBLD_H
    - - - -
    -
    - - - - diff --git a/docs/manual/_network_8cc_source.html b/docs/manual/_network_8cc_source.html deleted file mode 100644 index 2f277c8..0000000 --- a/docs/manual/_network_8cc_source.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Network.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include <thread>
    -
    8#include <mutex>
    -
    9#include <sstream>
    -
    10#include "Network.h"
    -
    11#include "bayesnet/utils/bayesnetUtils.h"
    -
    12namespace bayesnet {
    -
    13 Network::Network() : fitted{ false }, maxThreads{ 0.95 }, classNumStates{ 0 }, laplaceSmoothing{ 0 }
    -
    14 {
    -
    15 }
    -
    16 Network::Network(float maxT) : fitted{ false }, maxThreads{ maxT }, classNumStates{ 0 }, laplaceSmoothing{ 0 }
    -
    17 {
    -
    18
    -
    19 }
    -
    20 Network::Network(const Network& other) : laplaceSmoothing(other.laplaceSmoothing), features(other.features), className(other.className), classNumStates(other.getClassNumStates()),
    -
    21 maxThreads(other.getMaxThreads()), fitted(other.fitted), samples(other.samples)
    -
    22 {
    -
    23 if (samples.defined())
    -
    24 samples = samples.clone();
    -
    25 for (const auto& node : other.nodes) {
    -
    26 nodes[node.first] = std::make_unique<Node>(*node.second);
    -
    27 }
    -
    28 }
    -
    29 void Network::initialize()
    -
    30 {
    -
    31 features.clear();
    -
    32 className = "";
    -
    33 classNumStates = 0;
    -
    34 fitted = false;
    -
    35 nodes.clear();
    -
    36 samples = torch::Tensor();
    -
    37 }
    -
    38 float Network::getMaxThreads() const
    -
    39 {
    -
    40 return maxThreads;
    -
    41 }
    -
    42 torch::Tensor& Network::getSamples()
    -
    43 {
    -
    44 return samples;
    -
    45 }
    -
    46 void Network::addNode(const std::string& name)
    -
    47 {
    -
    48 if (name == "") {
    -
    49 throw std::invalid_argument("Node name cannot be empty");
    -
    50 }
    -
    51 if (nodes.find(name) != nodes.end()) {
    -
    52 return;
    -
    53 }
    -
    54 if (find(features.begin(), features.end(), name) == features.end()) {
    -
    55 features.push_back(name);
    -
    56 }
    -
    57 nodes[name] = std::make_unique<Node>(name);
    -
    58 }
    -
    59 std::vector<std::string> Network::getFeatures() const
    -
    60 {
    -
    61 return features;
    -
    62 }
    -
    63 int Network::getClassNumStates() const
    -
    64 {
    -
    65 return classNumStates;
    -
    66 }
    -
    67 int Network::getStates() const
    -
    68 {
    -
    69 int result = 0;
    -
    70 for (auto& node : nodes) {
    -
    71 result += node.second->getNumStates();
    -
    72 }
    -
    73 return result;
    -
    74 }
    -
    75 std::string Network::getClassName() const
    -
    76 {
    -
    77 return className;
    -
    78 }
    -
    79 bool Network::isCyclic(const std::string& nodeId, std::unordered_set<std::string>& visited, std::unordered_set<std::string>& recStack)
    -
    80 {
    -
    81 if (visited.find(nodeId) == visited.end()) // if node hasn't been visited yet
    -
    82 {
    -
    83 visited.insert(nodeId);
    -
    84 recStack.insert(nodeId);
    -
    85 for (Node* child : nodes[nodeId]->getChildren()) {
    -
    86 if (visited.find(child->getName()) == visited.end() && isCyclic(child->getName(), visited, recStack))
    -
    87 return true;
    -
    88 if (recStack.find(child->getName()) != recStack.end())
    -
    89 return true;
    -
    90 }
    -
    91 }
    -
    92 recStack.erase(nodeId); // remove node from recursion stack before function ends
    -
    93 return false;
    -
    94 }
    -
    95 void Network::addEdge(const std::string& parent, const std::string& child)
    -
    96 {
    -
    97 if (nodes.find(parent) == nodes.end()) {
    -
    98 throw std::invalid_argument("Parent node " + parent + " does not exist");
    -
    99 }
    -
    100 if (nodes.find(child) == nodes.end()) {
    -
    101 throw std::invalid_argument("Child node " + child + " does not exist");
    -
    102 }
    -
    103 // Temporarily add edge to check for cycles
    -
    104 nodes[parent]->addChild(nodes[child].get());
    -
    105 nodes[child]->addParent(nodes[parent].get());
    -
    106 std::unordered_set<std::string> visited;
    -
    107 std::unordered_set<std::string> recStack;
    -
    108 if (isCyclic(nodes[child]->getName(), visited, recStack)) // if adding this edge forms a cycle
    -
    109 {
    -
    110 // remove problematic edge
    -
    111 nodes[parent]->removeChild(nodes[child].get());
    -
    112 nodes[child]->removeParent(nodes[parent].get());
    -
    113 throw std::invalid_argument("Adding this edge forms a cycle in the graph.");
    -
    114 }
    -
    115 }
    -
    116 std::map<std::string, std::unique_ptr<Node>>& Network::getNodes()
    -
    117 {
    -
    118 return nodes;
    -
    119 }
    -
    120 void Network::checkFitData(int n_samples, int n_features, int n_samples_y, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -
    121 {
    -
    122 if (weights.size(0) != n_samples) {
    -
    123 throw std::invalid_argument("Weights (" + std::to_string(weights.size(0)) + ") must have the same number of elements as samples (" + std::to_string(n_samples) + ") in Network::fit");
    -
    124 }
    -
    125 if (n_samples != n_samples_y) {
    -
    126 throw std::invalid_argument("X and y must have the same number of samples in Network::fit (" + std::to_string(n_samples) + " != " + std::to_string(n_samples_y) + ")");
    -
    127 }
    -
    128 if (n_features != featureNames.size()) {
    -
    129 throw std::invalid_argument("X and features must have the same number of features in Network::fit (" + std::to_string(n_features) + " != " + std::to_string(featureNames.size()) + ")");
    -
    130 }
    -
    131 if (features.size() == 0) {
    -
    132 throw std::invalid_argument("The network has not been initialized. You must call addNode() before calling fit()");
    -
    133 }
    -
    134 if (n_features != features.size() - 1) {
    -
    135 throw std::invalid_argument("X and local features must have the same number of features in Network::fit (" + std::to_string(n_features) + " != " + std::to_string(features.size() - 1) + ")");
    -
    136 }
    -
    137 if (find(features.begin(), features.end(), className) == features.end()) {
    -
    138 throw std::invalid_argument("Class Name not found in Network::features");
    -
    139 }
    -
    140 for (auto& feature : featureNames) {
    -
    141 if (find(features.begin(), features.end(), feature) == features.end()) {
    -
    142 throw std::invalid_argument("Feature " + feature + " not found in Network::features");
    -
    143 }
    -
    144 if (states.find(feature) == states.end()) {
    -
    145 throw std::invalid_argument("Feature " + feature + " not found in states");
    -
    146 }
    -
    147 }
    -
    148 }
    -
    149 void Network::setStates(const std::map<std::string, std::vector<int>>& states)
    -
    150 {
    -
    151 // Set states to every Node in the network
    -
    152 for_each(features.begin(), features.end(), [this, &states](const std::string& feature) {
    -
    153 nodes.at(feature)->setNumStates(states.at(feature).size());
    -
    154 });
    -
    155 classNumStates = nodes.at(className)->getNumStates();
    -
    156 }
    -
    157 // X comes in nxm, where n is the number of features and m the number of samples
    -
    158 void Network::fit(const torch::Tensor& X, const torch::Tensor& y, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -
    159 {
    -
    160 checkFitData(X.size(1), X.size(0), y.size(0), featureNames, className, states, weights);
    -
    161 this->className = className;
    -
    162 torch::Tensor ytmp = torch::transpose(y.view({ y.size(0), 1 }), 0, 1);
    -
    163 samples = torch::cat({ X , ytmp }, 0);
    -
    164 for (int i = 0; i < featureNames.size(); ++i) {
    -
    165 auto row_feature = X.index({ i, "..." });
    -
    166 }
    -
    167 completeFit(states, weights);
    -
    168 }
    -
    169 void Network::fit(const torch::Tensor& samples, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -
    170 {
    -
    171 checkFitData(samples.size(1), samples.size(0) - 1, samples.size(1), featureNames, className, states, weights);
    -
    172 this->className = className;
    -
    173 this->samples = samples;
    -
    174 completeFit(states, weights);
    -
    175 }
    -
    176 // input_data comes in nxm, where n is the number of features and m the number of samples
    -
    177 void Network::fit(const std::vector<std::vector<int>>& input_data, const std::vector<int>& labels, const std::vector<double>& weights_, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -
    178 {
    -
    179 const torch::Tensor weights = torch::tensor(weights_, torch::kFloat64);
    -
    180 checkFitData(input_data[0].size(), input_data.size(), labels.size(), featureNames, className, states, weights);
    -
    181 this->className = className;
    -
    182 // Build tensor of samples (nxm) (n+1 because of the class)
    -
    183 samples = torch::zeros({ static_cast<int>(input_data.size() + 1), static_cast<int>(input_data[0].size()) }, torch::kInt32);
    -
    184 for (int i = 0; i < featureNames.size(); ++i) {
    -
    185 samples.index_put_({ i, "..." }, torch::tensor(input_data[i], torch::kInt32));
    -
    186 }
    -
    187 samples.index_put_({ -1, "..." }, torch::tensor(labels, torch::kInt32));
    -
    188 completeFit(states, weights);
    -
    189 }
    -
    190 void Network::completeFit(const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -
    191 {
    -
    192 setStates(states);
    -
    193 laplaceSmoothing = 1.0 / samples.size(1); // To use in CPT computation
    -
    194 std::vector<std::thread> threads;
    -
    195 for (auto& node : nodes) {
    -
    196 threads.emplace_back([this, &node, &weights]() {
    -
    197 node.second->computeCPT(samples, features, laplaceSmoothing, weights);
    -
    198 });
    -
    199 }
    -
    200 for (auto& thread : threads) {
    -
    201 thread.join();
    -
    202 }
    -
    203 fitted = true;
    -
    204 }
    -
    205 torch::Tensor Network::predict_tensor(const torch::Tensor& samples, const bool proba)
    -
    206 {
    -
    207 if (!fitted) {
    -
    208 throw std::logic_error("You must call fit() before calling predict()");
    -
    209 }
    -
    210 torch::Tensor result;
    -
    211 result = torch::zeros({ samples.size(1), classNumStates }, torch::kFloat64);
    -
    212 for (int i = 0; i < samples.size(1); ++i) {
    -
    213 const torch::Tensor sample = samples.index({ "...", i });
    -
    214 auto psample = predict_sample(sample);
    -
    215 auto temp = torch::tensor(psample, torch::kFloat64);
    -
    216 // result.index_put_({ i, "..." }, torch::tensor(predict_sample(sample), torch::kFloat64));
    -
    217 result.index_put_({ i, "..." }, temp);
    -
    218 }
    -
    219 if (proba)
    -
    220 return result;
    -
    221 return result.argmax(1);
    -
    222 }
    -
    223 // Return mxn tensor of probabilities
    -
    224 torch::Tensor Network::predict_proba(const torch::Tensor& samples)
    -
    225 {
    -
    226 return predict_tensor(samples, true);
    -
    227 }
    -
    228
    -
    229 // Return mxn tensor of probabilities
    -
    230 torch::Tensor Network::predict(const torch::Tensor& samples)
    -
    231 {
    -
    232 return predict_tensor(samples, false);
    -
    233 }
    -
    234
    -
    235 // Return mx1 std::vector of predictions
    -
    236 // tsamples is nxm std::vector of samples
    -
    237 std::vector<int> Network::predict(const std::vector<std::vector<int>>& tsamples)
    -
    238 {
    -
    239 if (!fitted) {
    -
    240 throw std::logic_error("You must call fit() before calling predict()");
    -
    241 }
    -
    242 std::vector<int> predictions;
    -
    243 std::vector<int> sample;
    -
    244 for (int row = 0; row < tsamples[0].size(); ++row) {
    -
    245 sample.clear();
    -
    246 for (int col = 0; col < tsamples.size(); ++col) {
    -
    247 sample.push_back(tsamples[col][row]);
    -
    248 }
    -
    249 std::vector<double> classProbabilities = predict_sample(sample);
    -
    250 // Find the class with the maximum posterior probability
    -
    251 auto maxElem = max_element(classProbabilities.begin(), classProbabilities.end());
    -
    252 int predictedClass = distance(classProbabilities.begin(), maxElem);
    -
    253 predictions.push_back(predictedClass);
    -
    254 }
    -
    255 return predictions;
    -
    256 }
    -
    257 // Return mxn std::vector of probabilities
    -
    258 // tsamples is nxm std::vector of samples
    -
    259 std::vector<std::vector<double>> Network::predict_proba(const std::vector<std::vector<int>>& tsamples)
    -
    260 {
    -
    261 if (!fitted) {
    -
    262 throw std::logic_error("You must call fit() before calling predict_proba()");
    -
    263 }
    -
    264 std::vector<std::vector<double>> predictions;
    -
    265 std::vector<int> sample;
    -
    266 for (int row = 0; row < tsamples[0].size(); ++row) {
    -
    267 sample.clear();
    -
    268 for (int col = 0; col < tsamples.size(); ++col) {
    -
    269 sample.push_back(tsamples[col][row]);
    -
    270 }
    -
    271 predictions.push_back(predict_sample(sample));
    -
    272 }
    -
    273 return predictions;
    -
    274 }
    -
    275 double Network::score(const std::vector<std::vector<int>>& tsamples, const std::vector<int>& labels)
    -
    276 {
    -
    277 std::vector<int> y_pred = predict(tsamples);
    -
    278 int correct = 0;
    -
    279 for (int i = 0; i < y_pred.size(); ++i) {
    -
    280 if (y_pred[i] == labels[i]) {
    -
    281 correct++;
    -
    282 }
    -
    283 }
    -
    284 return (double)correct / y_pred.size();
    -
    285 }
    -
    286 // Return 1xn std::vector of probabilities
    -
    287 std::vector<double> Network::predict_sample(const std::vector<int>& sample)
    -
    288 {
    -
    289 // Ensure the sample size is equal to the number of features
    -
    290 if (sample.size() != features.size() - 1) {
    -
    291 throw std::invalid_argument("Sample size (" + std::to_string(sample.size()) +
    -
    292 ") does not match the number of features (" + std::to_string(features.size() - 1) + ")");
    -
    293 }
    -
    294 std::map<std::string, int> evidence;
    -
    295 for (int i = 0; i < sample.size(); ++i) {
    -
    296 evidence[features[i]] = sample[i];
    -
    297 }
    -
    298 return exactInference(evidence);
    -
    299 }
    -
    300 // Return 1xn std::vector of probabilities
    -
    301 std::vector<double> Network::predict_sample(const torch::Tensor& sample)
    -
    302 {
    -
    303 // Ensure the sample size is equal to the number of features
    -
    304 if (sample.size(0) != features.size() - 1) {
    -
    305 throw std::invalid_argument("Sample size (" + std::to_string(sample.size(0)) +
    -
    306 ") does not match the number of features (" + std::to_string(features.size() - 1) + ")");
    -
    307 }
    -
    308 std::map<std::string, int> evidence;
    -
    309 for (int i = 0; i < sample.size(0); ++i) {
    -
    310 evidence[features[i]] = sample[i].item<int>();
    -
    311 }
    -
    312 return exactInference(evidence);
    -
    313 }
    -
    314 double Network::computeFactor(std::map<std::string, int>& completeEvidence)
    -
    315 {
    -
    316 double result = 1.0;
    -
    317 for (auto& node : getNodes()) {
    -
    318 result *= node.second->getFactorValue(completeEvidence);
    -
    319 }
    -
    320 return result;
    -
    321 }
    -
    322 std::vector<double> Network::exactInference(std::map<std::string, int>& evidence)
    -
    323 {
    -
    324 std::vector<double> result(classNumStates, 0.0);
    -
    325 std::vector<std::thread> threads;
    -
    326 std::mutex mtx;
    -
    327 for (int i = 0; i < classNumStates; ++i) {
    -
    328 threads.emplace_back([this, &result, &evidence, i, &mtx]() {
    -
    329 auto completeEvidence = std::map<std::string, int>(evidence);
    -
    330 completeEvidence[getClassName()] = i;
    -
    331 double factor = computeFactor(completeEvidence);
    -
    332 std::lock_guard<std::mutex> lock(mtx);
    -
    333 result[i] = factor;
    -
    334 });
    -
    335 }
    -
    336 for (auto& thread : threads) {
    -
    337 thread.join();
    -
    338 }
    -
    339 // Normalize result
    -
    340 double sum = accumulate(result.begin(), result.end(), 0.0);
    -
    341 transform(result.begin(), result.end(), result.begin(), [sum](const double& value) { return value / sum; });
    -
    342 return result;
    -
    343 }
    -
    344 std::vector<std::string> Network::show() const
    -
    345 {
    -
    346 std::vector<std::string> result;
    -
    347 // Draw the network
    -
    348 for (auto& node : nodes) {
    -
    349 std::string line = node.first + " -> ";
    -
    350 for (auto child : node.second->getChildren()) {
    -
    351 line += child->getName() + ", ";
    -
    352 }
    -
    353 result.push_back(line);
    -
    354 }
    -
    355 return result;
    -
    356 }
    -
    357 std::vector<std::string> Network::graph(const std::string& title) const
    -
    358 {
    -
    359 auto output = std::vector<std::string>();
    -
    360 auto prefix = "digraph BayesNet {\nlabel=<BayesNet ";
    -
    361 auto suffix = ">\nfontsize=30\nfontcolor=blue\nlabelloc=t\nlayout=circo\n";
    -
    362 std::string header = prefix + title + suffix;
    -
    363 output.push_back(header);
    -
    364 for (auto& node : nodes) {
    -
    365 auto result = node.second->graph(className);
    -
    366 output.insert(output.end(), result.begin(), result.end());
    -
    367 }
    -
    368 output.push_back("}\n");
    -
    369 return output;
    -
    370 }
    -
    371 std::vector<std::pair<std::string, std::string>> Network::getEdges() const
    -
    372 {
    -
    373 auto edges = std::vector<std::pair<std::string, std::string>>();
    -
    374 for (const auto& node : nodes) {
    -
    375 auto head = node.first;
    -
    376 for (const auto& child : node.second->getChildren()) {
    -
    377 auto tail = child->getName();
    -
    378 edges.push_back({ head, tail });
    -
    379 }
    -
    380 }
    -
    381 return edges;
    -
    382 }
    -
    383 int Network::getNumEdges() const
    -
    384 {
    -
    385 return getEdges().size();
    -
    386 }
    -
    387 std::vector<std::string> Network::topological_sort()
    -
    388 {
    -
    389 /* Check if al the fathers of every node are before the node */
    -
    390 auto result = features;
    -
    391 result.erase(remove(result.begin(), result.end(), className), result.end());
    -
    392 bool ending{ false };
    -
    393 while (!ending) {
    -
    394 ending = true;
    -
    395 for (auto feature : features) {
    -
    396 auto fathers = nodes[feature]->getParents();
    -
    397 for (const auto& father : fathers) {
    -
    398 auto fatherName = father->getName();
    -
    399 if (fatherName == className) {
    -
    400 continue;
    -
    401 }
    -
    402 // Check if father is placed before the actual feature
    -
    403 auto it = find(result.begin(), result.end(), fatherName);
    -
    404 if (it != result.end()) {
    -
    405 auto it2 = find(result.begin(), result.end(), feature);
    -
    406 if (it2 != result.end()) {
    -
    407 if (distance(it, it2) < 0) {
    -
    408 // if it is not, insert it before the feature
    -
    409 result.erase(remove(result.begin(), result.end(), fatherName), result.end());
    -
    410 result.insert(it2, fatherName);
    -
    411 ending = false;
    -
    412 }
    -
    413 }
    -
    414 }
    -
    415 }
    -
    416 }
    -
    417 }
    -
    418 return result;
    -
    419 }
    -
    420 std::string Network::dump_cpt() const
    -
    421 {
    -
    422 std::stringstream oss;
    -
    423 for (auto& node : nodes) {
    -
    424 oss << "* " << node.first << ": (" << node.second->getNumStates() << ") : " << node.second->getCPT().sizes() << std::endl;
    -
    425 oss << node.second->getCPT() << std::endl;
    -
    426 }
    -
    427 return oss.str();
    -
    428 }
    -
    429}
    -
    -
    - - - - diff --git a/docs/manual/_network_8h_source.html b/docs/manual/_network_8h_source.html deleted file mode 100644 index 938087c..0000000 --- a/docs/manual/_network_8h_source.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Network.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef NETWORK_H
    -
    8#define NETWORK_H
    -
    9#include <map>
    -
    10#include <vector>
    -
    11#include "bayesnet/config.h"
    -
    12#include "Node.h"
    -
    13
    -
    14namespace bayesnet {
    -
    -
    15 class Network {
    -
    16 public:
    -
    17 Network();
    -
    18 explicit Network(float);
    -
    19 explicit Network(const Network&);
    -
    20 ~Network() = default;
    -
    21 torch::Tensor& getSamples();
    -
    22 float getMaxThreads() const;
    -
    23 void addNode(const std::string&);
    -
    24 void addEdge(const std::string&, const std::string&);
    -
    25 std::map<std::string, std::unique_ptr<Node>>& getNodes();
    -
    26 std::vector<std::string> getFeatures() const;
    -
    27 int getStates() const;
    -
    28 std::vector<std::pair<std::string, std::string>> getEdges() const;
    -
    29 int getNumEdges() const;
    -
    30 int getClassNumStates() const;
    -
    31 std::string getClassName() const;
    -
    32 /*
    -
    33 Notice: Nodes have to be inserted in the same order as they are in the dataset, i.e., first node is first column and so on.
    -
    34 */
    -
    35 void fit(const std::vector<std::vector<int>>& input_data, const std::vector<int>& labels, const std::vector<double>& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -
    36 void fit(const torch::Tensor& X, const torch::Tensor& y, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -
    37 void fit(const torch::Tensor& samples, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -
    38 std::vector<int> predict(const std::vector<std::vector<int>>&); // Return mx1 std::vector of predictions
    -
    39 torch::Tensor predict(const torch::Tensor&); // Return mx1 tensor of predictions
    -
    40 torch::Tensor predict_tensor(const torch::Tensor& samples, const bool proba);
    -
    41 std::vector<std::vector<double>> predict_proba(const std::vector<std::vector<int>>&); // Return mxn std::vector of probabilities
    -
    42 torch::Tensor predict_proba(const torch::Tensor&); // Return mxn tensor of probabilities
    -
    43 double score(const std::vector<std::vector<int>>&, const std::vector<int>&);
    -
    44 std::vector<std::string> topological_sort();
    -
    45 std::vector<std::string> show() const;
    -
    46 std::vector<std::string> graph(const std::string& title) const; // Returns a std::vector of std::strings representing the graph in graphviz format
    -
    47 void initialize();
    -
    48 std::string dump_cpt() const;
    -
    49 inline std::string version() { return { project_version.begin(), project_version.end() }; }
    -
    50 private:
    -
    51 std::map<std::string, std::unique_ptr<Node>> nodes;
    -
    52 bool fitted;
    -
    53 float maxThreads = 0.95;
    -
    54 int classNumStates;
    -
    55 std::vector<std::string> features; // Including classname
    -
    56 std::string className;
    -
    57 double laplaceSmoothing;
    -
    58 torch::Tensor samples; // n+1xm tensor used to fit the model
    -
    59 bool isCyclic(const std::string&, std::unordered_set<std::string>&, std::unordered_set<std::string>&);
    -
    60 std::vector<double> predict_sample(const std::vector<int>&);
    -
    61 std::vector<double> predict_sample(const torch::Tensor&);
    -
    62 std::vector<double> exactInference(std::map<std::string, int>&);
    -
    63 double computeFactor(std::map<std::string, int>&);
    -
    64 void completeFit(const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -
    65 void checkFitData(int n_features, int n_samples, int n_samples_y, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -
    66 void setStates(const std::map<std::string, std::vector<int>>&);
    -
    67 };
    -
    -
    68}
    -
    69#endif
    - -
    -
    - - - - diff --git a/docs/manual/_node_8cc_source.html b/docs/manual/_node_8cc_source.html deleted file mode 100644 index 2046da7..0000000 --- a/docs/manual/_node_8cc_source.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Node.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "Node.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10
    -
    11 Node::Node(const std::string& name)
    -
    12 : name(name)
    -
    13 {
    -
    14 }
    -
    15 void Node::clear()
    -
    16 {
    -
    17 parents.clear();
    -
    18 children.clear();
    -
    19 cpTable = torch::Tensor();
    -
    20 dimensions.clear();
    -
    21 numStates = 0;
    -
    22 }
    -
    23 std::string Node::getName() const
    -
    24 {
    -
    25 return name;
    -
    26 }
    -
    27 void Node::addParent(Node* parent)
    -
    28 {
    -
    29 parents.push_back(parent);
    -
    30 }
    -
    31 void Node::removeParent(Node* parent)
    -
    32 {
    -
    33 parents.erase(std::remove(parents.begin(), parents.end(), parent), parents.end());
    -
    34 }
    -
    35 void Node::removeChild(Node* child)
    -
    36 {
    -
    37 children.erase(std::remove(children.begin(), children.end(), child), children.end());
    -
    38 }
    -
    39 void Node::addChild(Node* child)
    -
    40 {
    -
    41 children.push_back(child);
    -
    42 }
    -
    43 std::vector<Node*>& Node::getParents()
    -
    44 {
    -
    45 return parents;
    -
    46 }
    -
    47 std::vector<Node*>& Node::getChildren()
    -
    48 {
    -
    49 return children;
    -
    50 }
    -
    51 int Node::getNumStates() const
    -
    52 {
    -
    53 return numStates;
    -
    54 }
    -
    55 void Node::setNumStates(int numStates)
    -
    56 {
    -
    57 this->numStates = numStates;
    -
    58 }
    -
    59 torch::Tensor& Node::getCPT()
    -
    60 {
    -
    61 return cpTable;
    -
    62 }
    -
    63 /*
    -
    64 The MinFill criterion is a heuristic for variable elimination.
    -
    65 The variable that minimizes the number of edges that need to be added to the graph to make it triangulated.
    -
    66 This is done by counting the number of edges that need to be added to the graph if the variable is eliminated.
    -
    67 The variable with the minimum number of edges is chosen.
    -
    68 Here this is done computing the length of the combinations of the node neighbors taken 2 by 2.
    -
    69 */
    -
    70 unsigned Node::minFill()
    -
    71 {
    -
    72 std::unordered_set<std::string> neighbors;
    -
    73 for (auto child : children) {
    -
    74 neighbors.emplace(child->getName());
    -
    75 }
    -
    76 for (auto parent : parents) {
    -
    77 neighbors.emplace(parent->getName());
    -
    78 }
    -
    79 auto source = std::vector<std::string>(neighbors.begin(), neighbors.end());
    -
    80 return combinations(source).size();
    -
    81 }
    -
    82 std::vector<std::pair<std::string, std::string>> Node::combinations(const std::vector<std::string>& source)
    -
    83 {
    -
    84 std::vector<std::pair<std::string, std::string>> result;
    -
    85 for (int i = 0; i < source.size(); ++i) {
    -
    86 std::string temp = source[i];
    -
    87 for (int j = i + 1; j < source.size(); ++j) {
    -
    88 result.push_back({ temp, source[j] });
    -
    89 }
    -
    90 }
    -
    91 return result;
    -
    92 }
    -
    93 void Node::computeCPT(const torch::Tensor& dataset, const std::vector<std::string>& features, const double laplaceSmoothing, const torch::Tensor& weights)
    -
    94 {
    -
    95 dimensions.clear();
    -
    96 // Get dimensions of the CPT
    -
    97 dimensions.push_back(numStates);
    -
    98 transform(parents.begin(), parents.end(), back_inserter(dimensions), [](const auto& parent) { return parent->getNumStates(); });
    -
    99 // Create a tensor of zeros with the dimensions of the CPT
    -
    100 cpTable = torch::zeros(dimensions, torch::kFloat) + laplaceSmoothing;
    -
    101 // Fill table with counts
    -
    102 auto pos = find(features.begin(), features.end(), name);
    -
    103 if (pos == features.end()) {
    -
    104 throw std::logic_error("Feature " + name + " not found in dataset");
    -
    105 }
    -
    106 int name_index = pos - features.begin();
    -
    107 for (int n_sample = 0; n_sample < dataset.size(1); ++n_sample) {
    -
    108 c10::List<c10::optional<at::Tensor>> coordinates;
    -
    109 coordinates.push_back(dataset.index({ name_index, n_sample }));
    -
    110 for (auto parent : parents) {
    -
    111 pos = find(features.begin(), features.end(), parent->getName());
    -
    112 if (pos == features.end()) {
    -
    113 throw std::logic_error("Feature parent " + parent->getName() + " not found in dataset");
    -
    114 }
    -
    115 int parent_index = pos - features.begin();
    -
    116 coordinates.push_back(dataset.index({ parent_index, n_sample }));
    -
    117 }
    -
    118 // Increment the count of the corresponding coordinate
    -
    119 cpTable.index_put_({ coordinates }, cpTable.index({ coordinates }) + weights.index({ n_sample }).item<double>());
    -
    120 }
    -
    121 // Normalize the counts
    -
    122 cpTable = cpTable / cpTable.sum(0);
    -
    123 }
    -
    124 float Node::getFactorValue(std::map<std::string, int>& evidence)
    -
    125 {
    -
    126 c10::List<c10::optional<at::Tensor>> coordinates;
    -
    127 // following predetermined order of indices in the cpTable (see Node.h)
    -
    128 coordinates.push_back(at::tensor(evidence[name]));
    -
    129 transform(parents.begin(), parents.end(), std::back_inserter(coordinates), [&evidence](const auto& parent) { return at::tensor(evidence[parent->getName()]); });
    -
    130 return cpTable.index({ coordinates }).item<float>();
    -
    131 }
    -
    132 std::vector<std::string> Node::graph(const std::string& className)
    -
    133 {
    -
    134 auto output = std::vector<std::string>();
    -
    135 auto suffix = name == className ? ", fontcolor=red, fillcolor=lightblue, style=filled " : "";
    -
    136 output.push_back(name + " [shape=circle" + suffix + "] \n");
    -
    137 transform(children.begin(), children.end(), back_inserter(output), [this](const auto& child) { return name + " -> " + child->getName(); });
    -
    138 return output;
    -
    139 }
    -
    140}
    -
    -
    - - - - diff --git a/docs/manual/_node_8h_source.html b/docs/manual/_node_8h_source.html deleted file mode 100644 index 5121b18..0000000 --- a/docs/manual/_node_8h_source.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Node.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef NODE_H
    -
    8#define NODE_H
    -
    9#include <unordered_set>
    -
    10#include <vector>
    -
    11#include <string>
    -
    12#include <torch/torch.h>
    -
    13namespace bayesnet {
    -
    -
    14 class Node {
    -
    15 public:
    -
    16 explicit Node(const std::string&);
    -
    17 void clear();
    -
    18 void addParent(Node*);
    -
    19 void addChild(Node*);
    -
    20 void removeParent(Node*);
    -
    21 void removeChild(Node*);
    -
    22 std::string getName() const;
    -
    23 std::vector<Node*>& getParents();
    -
    24 std::vector<Node*>& getChildren();
    -
    25 torch::Tensor& getCPT();
    -
    26 void computeCPT(const torch::Tensor& dataset, const std::vector<std::string>& features, const double laplaceSmoothing, const torch::Tensor& weights);
    -
    27 int getNumStates() const;
    -
    28 void setNumStates(int);
    -
    29 unsigned minFill();
    -
    30 std::vector<std::string> graph(const std::string& clasName); // Returns a std::vector of std::strings representing the graph in graphviz format
    -
    31 float getFactorValue(std::map<std::string, int>&);
    -
    32 private:
    -
    33 std::string name;
    -
    34 std::vector<Node*> parents;
    -
    35 std::vector<Node*> children;
    -
    36 int numStates = 0; // number of states of the variable
    -
    37 torch::Tensor cpTable; // Order of indices is 0-> node variable, 1-> 1st parent, 2-> 2nd parent, ...
    -
    38 std::vector<int64_t> dimensions; // dimensions of the cpTable
    -
    39 std::vector<std::pair<std::string, std::string>> combinations(const std::vector<std::string>&);
    -
    40 };
    -
    -
    41}
    -
    42#endif
    - -
    -
    - - - - diff --git a/docs/manual/_proposal_8cc_source.html b/docs/manual/_proposal_8cc_source.html deleted file mode 100644 index 89130d5..0000000 --- a/docs/manual/_proposal_8cc_source.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Proposal.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "Proposal.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 Proposal::Proposal(torch::Tensor& dataset_, std::vector<std::string>& features_, std::string& className_) : pDataset(dataset_), pFeatures(features_), pClassName(className_) {}
    -
    11 Proposal::~Proposal()
    -
    12 {
    -
    13 for (auto& [key, value] : discretizers) {
    -
    14 delete value;
    -
    15 }
    -
    16 }
    -
    17 void Proposal::checkInput(const torch::Tensor& X, const torch::Tensor& y)
    -
    18 {
    -
    19 if (!torch::is_floating_point(X)) {
    -
    20 throw std::invalid_argument("X must be a floating point tensor");
    -
    21 }
    -
    22 if (torch::is_floating_point(y)) {
    -
    23 throw std::invalid_argument("y must be an integer tensor");
    -
    24 }
    -
    25 }
    -
    26 map<std::string, std::vector<int>> Proposal::localDiscretizationProposal(const map<std::string, std::vector<int>>& oldStates, Network& model)
    -
    27 {
    -
    28 // order of local discretization is important. no good 0, 1, 2...
    -
    29 // although we rediscretize features after the local discretization of every feature
    -
    30 auto order = model.topological_sort();
    -
    31 auto& nodes = model.getNodes();
    -
    32 map<std::string, std::vector<int>> states = oldStates;
    -
    33 std::vector<int> indicesToReDiscretize;
    -
    34 bool upgrade = false; // Flag to check if we need to upgrade the model
    -
    35 for (auto feature : order) {
    -
    36 auto nodeParents = nodes[feature]->getParents();
    -
    37 if (nodeParents.size() < 2) continue; // Only has class as parent
    -
    38 upgrade = true;
    -
    39 int index = find(pFeatures.begin(), pFeatures.end(), feature) - pFeatures.begin();
    -
    40 indicesToReDiscretize.push_back(index); // We need to re-discretize this feature
    -
    41 std::vector<std::string> parents;
    -
    42 transform(nodeParents.begin(), nodeParents.end(), back_inserter(parents), [](const auto& p) { return p->getName(); });
    -
    43 // Remove class as parent as it will be added later
    -
    44 parents.erase(remove(parents.begin(), parents.end(), pClassName), parents.end());
    -
    45 // Get the indices of the parents
    -
    46 std::vector<int> indices;
    -
    47 indices.push_back(-1); // Add class index
    -
    48 transform(parents.begin(), parents.end(), back_inserter(indices), [&](const auto& p) {return find(pFeatures.begin(), pFeatures.end(), p) - pFeatures.begin(); });
    -
    49 // Now we fit the discretizer of the feature, conditioned on its parents and the class i.e. discretizer.fit(X[index], X[indices] + y)
    -
    50 std::vector<std::string> yJoinParents(Xf.size(1));
    -
    51 for (auto idx : indices) {
    -
    52 for (int i = 0; i < Xf.size(1); ++i) {
    -
    53 yJoinParents[i] += to_string(pDataset.index({ idx, i }).item<int>());
    -
    54 }
    -
    55 }
    -
    56 auto yxv = factorize(yJoinParents);
    -
    57 auto xvf_ptr = Xf.index({ index }).data_ptr<float>();
    -
    58 auto xvf = std::vector<mdlp::precision_t>(xvf_ptr, xvf_ptr + Xf.size(1));
    -
    59 discretizers[feature]->fit(xvf, yxv);
    -
    60 }
    -
    61 if (upgrade) {
    -
    62 // Discretize again X (only the affected indices) with the new fitted discretizers
    -
    63 for (auto index : indicesToReDiscretize) {
    -
    64 auto Xt_ptr = Xf.index({ index }).data_ptr<float>();
    -
    65 auto Xt = std::vector<float>(Xt_ptr, Xt_ptr + Xf.size(1));
    -
    66 pDataset.index_put_({ index, "..." }, torch::tensor(discretizers[pFeatures[index]]->transform(Xt)));
    -
    67 auto xStates = std::vector<int>(discretizers[pFeatures[index]]->getCutPoints().size() + 1);
    -
    68 iota(xStates.begin(), xStates.end(), 0);
    -
    69 //Update new states of the feature/node
    -
    70 states[pFeatures[index]] = xStates;
    -
    71 }
    -
    72 const torch::Tensor weights = torch::full({ pDataset.size(1) }, 1.0 / pDataset.size(1), torch::kDouble);
    -
    73 model.fit(pDataset, weights, pFeatures, pClassName, states);
    -
    74 }
    -
    75 return states;
    -
    76 }
    -
    77 map<std::string, std::vector<int>> Proposal::fit_local_discretization(const torch::Tensor& y)
    -
    78 {
    -
    79 // Discretize the continuous input data and build pDataset (Classifier::dataset)
    -
    80 int m = Xf.size(1);
    -
    81 int n = Xf.size(0);
    -
    82 map<std::string, std::vector<int>> states;
    -
    83 pDataset = torch::zeros({ n + 1, m }, torch::kInt32);
    -
    84 auto yv = std::vector<int>(y.data_ptr<int>(), y.data_ptr<int>() + y.size(0));
    -
    85 // discretize input data by feature(row)
    -
    86 for (auto i = 0; i < pFeatures.size(); ++i) {
    -
    87 auto* discretizer = new mdlp::CPPFImdlp();
    -
    88 auto Xt_ptr = Xf.index({ i }).data_ptr<float>();
    -
    89 auto Xt = std::vector<float>(Xt_ptr, Xt_ptr + Xf.size(1));
    -
    90 discretizer->fit(Xt, yv);
    -
    91 pDataset.index_put_({ i, "..." }, torch::tensor(discretizer->transform(Xt)));
    -
    92 auto xStates = std::vector<int>(discretizer->getCutPoints().size() + 1);
    -
    93 iota(xStates.begin(), xStates.end(), 0);
    -
    94 states[pFeatures[i]] = xStates;
    -
    95 discretizers[pFeatures[i]] = discretizer;
    -
    96 }
    -
    97 int n_classes = torch::max(y).item<int>() + 1;
    -
    98 auto yStates = std::vector<int>(n_classes);
    -
    99 iota(yStates.begin(), yStates.end(), 0);
    -
    100 states[pClassName] = yStates;
    -
    101 pDataset.index_put_({ n, "..." }, y);
    -
    102 return states;
    -
    103 }
    -
    104 torch::Tensor Proposal::prepareX(torch::Tensor& X)
    -
    105 {
    -
    106 auto Xtd = torch::zeros_like(X, torch::kInt32);
    -
    107 for (int i = 0; i < X.size(0); ++i) {
    -
    108 auto Xt = std::vector<float>(X[i].data_ptr<float>(), X[i].data_ptr<float>() + X.size(1));
    -
    109 auto Xd = discretizers[pFeatures[i]]->transform(Xt);
    -
    110 Xtd.index_put_({ i }, torch::tensor(Xd, torch::kInt32));
    -
    111 }
    -
    112 return Xtd;
    -
    113 }
    -
    114 std::vector<int> Proposal::factorize(const std::vector<std::string>& labels_t)
    -
    115 {
    -
    116 std::vector<int> yy;
    -
    117 yy.reserve(labels_t.size());
    -
    118 std::map<std::string, int> labelMap;
    -
    119 int i = 0;
    -
    120 for (const std::string& label : labels_t) {
    -
    121 if (labelMap.find(label) == labelMap.end()) {
    -
    122 labelMap[label] = i++;
    -
    123 bool allDigits = std::all_of(label.begin(), label.end(), ::isdigit);
    -
    124 }
    -
    125 yy.push_back(labelMap[label]);
    -
    126 }
    -
    127 return yy;
    -
    128 }
    -
    129}
    -
    -
    - - - - diff --git a/docs/manual/_proposal_8h_source.html b/docs/manual/_proposal_8h_source.html deleted file mode 100644 index dcce17b..0000000 --- a/docs/manual/_proposal_8h_source.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Proposal.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef PROPOSAL_H
    -
    8#define PROPOSAL_H
    -
    9#include <string>
    -
    10#include <map>
    -
    11#include <torch/torch.h>
    -
    12#include <CPPFImdlp.h>
    -
    13#include "bayesnet/network/Network.h"
    -
    14#include "Classifier.h"
    -
    15
    -
    16namespace bayesnet {
    -
    -
    17 class Proposal {
    -
    18 public:
    -
    19 Proposal(torch::Tensor& pDataset, std::vector<std::string>& features_, std::string& className_);
    -
    20 virtual ~Proposal();
    -
    21 protected:
    -
    22 void checkInput(const torch::Tensor& X, const torch::Tensor& y);
    -
    23 torch::Tensor prepareX(torch::Tensor& X);
    -
    24 map<std::string, std::vector<int>> localDiscretizationProposal(const map<std::string, std::vector<int>>& states, Network& model);
    -
    25 map<std::string, std::vector<int>> fit_local_discretization(const torch::Tensor& y);
    -
    26 torch::Tensor Xf; // X continuous nxm tensor
    -
    27 torch::Tensor y; // y discrete nx1 tensor
    -
    28 map<std::string, mdlp::CPPFImdlp*> discretizers;
    -
    29 private:
    -
    30 std::vector<int> factorize(const std::vector<std::string>& labels_t);
    -
    31 torch::Tensor& pDataset; // (n+1)xm tensor
    -
    32 std::vector<std::string>& pFeatures;
    -
    33 std::string& pClassName;
    -
    34 };
    -
    -
    35}
    -
    36
    -
    37#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_s_p_o_d_e_8cc_source.html b/docs/manual/_s_p_o_d_e_8cc_source.html deleted file mode 100644 index 2e5c363..0000000 --- a/docs/manual/_s_p_o_d_e_8cc_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPODE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "SPODE.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10
    -
    11 SPODE::SPODE(int root) : Classifier(Network()), root(root) {}
    -
    12
    -
    13 void SPODE::buildModel(const torch::Tensor& weights)
    -
    14 {
    -
    15 // 0. Add all nodes to the model
    -
    16 addNodes();
    -
    17 // 1. Add edges from the class node to all other nodes
    -
    18 // 2. Add edges from the root node to all other nodes
    -
    19 for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -
    20 model.addEdge(className, features[i]);
    -
    21 if (i != root) {
    -
    22 model.addEdge(features[root], features[i]);
    -
    23 }
    -
    24 }
    -
    25 }
    -
    26 std::vector<std::string> SPODE::graph(const std::string& name) const
    -
    27 {
    -
    28 return model.graph(name);
    -
    29 }
    -
    30
    -
    31}
    -
    -
    - - - - diff --git a/docs/manual/_s_p_o_d_e_8h_source.html b/docs/manual/_s_p_o_d_e_8h_source.html deleted file mode 100644 index 681595b..0000000 --- a/docs/manual/_s_p_o_d_e_8h_source.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPODE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef SPODE_H
    -
    8#define SPODE_H
    -
    9#include "Classifier.h"
    -
    10
    -
    11namespace bayesnet {
    -
    -
    12 class SPODE : public Classifier {
    -
    13 private:
    -
    14 int root;
    -
    15 protected:
    -
    16 void buildModel(const torch::Tensor& weights) override;
    -
    17 public:
    -
    18 explicit SPODE(int root);
    -
    19 virtual ~SPODE() = default;
    -
    20 std::vector<std::string> graph(const std::string& name = "SPODE") const override;
    -
    21 };
    -
    -
    22}
    -
    23#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_s_p_o_d_e_ld_8cc_source.html b/docs/manual/_s_p_o_d_e_ld_8cc_source.html deleted file mode 100644 index 1afe7a6..0000000 --- a/docs/manual/_s_p_o_d_e_ld_8cc_source.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPODELd.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "SPODELd.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 SPODELd::SPODELd(int root) : SPODE(root), Proposal(dataset, features, className) {}
    -
    11 SPODELd& SPODELd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    12 {
    -
    13 checkInput(X_, y_);
    -
    14 Xf = X_;
    -
    15 y = y_;
    -
    16 return commonFit(features_, className_, states_);
    -
    17 }
    -
    18
    -
    19 SPODELd& SPODELd::fit(torch::Tensor& dataset, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    20 {
    -
    21 if (!torch::is_floating_point(dataset)) {
    -
    22 throw std::runtime_error("Dataset must be a floating point tensor");
    -
    23 }
    -
    24 Xf = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }).clone();
    -
    25 y = dataset.index({ -1, "..." }).clone().to(torch::kInt32);
    -
    26 return commonFit(features_, className_, states_);
    -
    27 }
    -
    28
    -
    29 SPODELd& SPODELd::commonFit(const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    30 {
    -
    31 features = features_;
    -
    32 className = className_;
    -
    33 // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -
    34 states = fit_local_discretization(y);
    -
    35 // We have discretized the input data
    -
    36 // 1st we need to fit the model to build the normal SPODE structure, SPODE::fit initializes the base Bayesian network
    -
    37 SPODE::fit(dataset, features, className, states);
    -
    38 states = localDiscretizationProposal(states, model);
    -
    39 return *this;
    -
    40 }
    -
    41 torch::Tensor SPODELd::predict(torch::Tensor& X)
    -
    42 {
    -
    43 auto Xt = prepareX(X);
    -
    44 return SPODE::predict(Xt);
    -
    45 }
    -
    46 std::vector<std::string> SPODELd::graph(const std::string& name) const
    -
    47 {
    -
    48 return SPODE::graph(name);
    -
    49 }
    -
    50}
    -
    -
    - - - - diff --git a/docs/manual/_s_p_o_d_e_ld_8h_source.html b/docs/manual/_s_p_o_d_e_ld_8h_source.html deleted file mode 100644 index 489c096..0000000 --- a/docs/manual/_s_p_o_d_e_ld_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPODELd.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef SPODELD_H
    -
    8#define SPODELD_H
    -
    9#include "SPODE.h"
    -
    10#include "Proposal.h"
    -
    11
    -
    12namespace bayesnet {
    -
    -
    13 class SPODELd : public SPODE, public Proposal {
    -
    14 public:
    -
    15 explicit SPODELd(int root);
    -
    16 virtual ~SPODELd() = default;
    -
    17 SPODELd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -
    18 SPODELd& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -
    19 SPODELd& commonFit(const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states);
    -
    20 std::vector<std::string> graph(const std::string& name = "SPODE") const override;
    -
    21 torch::Tensor predict(torch::Tensor& X) override;
    -
    22 static inline std::string version() { return "0.0.1"; };
    -
    23 };
    -
    -
    24}
    -
    25#endif // !SPODELD_H
    - - - -
    -
    - - - - diff --git a/docs/manual/_s_pn_d_e_8cc_source.html b/docs/manual/_s_pn_d_e_8cc_source.html deleted file mode 100644 index c5b2eff..0000000 --- a/docs/manual/_s_pn_d_e_8cc_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPnDE.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "SPnDE.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10
    -
    11 SPnDE::SPnDE(std::vector<int> parents) : Classifier(Network()), parents(parents) {}
    -
    12
    -
    13 void SPnDE::buildModel(const torch::Tensor& weights)
    -
    14 {
    -
    15 // 0. Add all nodes to the model
    -
    16 addNodes();
    -
    17 std::vector<int> attributes;
    -
    18 for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -
    19 if (std::find(parents.begin(), parents.end(), i) == parents.end()) {
    -
    20 attributes.push_back(i);
    -
    21 }
    -
    22 }
    -
    23 // 1. Add edges from the class node to all other nodes
    -
    24 // 2. Add edges from the parents nodes to all other nodes
    -
    25 for (const auto& attribute : attributes) {
    -
    26 model.addEdge(className, features[attribute]);
    -
    27 for (const auto& root : parents) {
    -
    28
    -
    29 model.addEdge(features[root], features[attribute]);
    -
    30 }
    -
    31 }
    -
    32 }
    -
    33 std::vector<std::string> SPnDE::graph(const std::string& name) const
    -
    34 {
    -
    35 return model.graph(name);
    -
    36 }
    -
    37
    -
    38}
    -
    -
    - - - - diff --git a/docs/manual/_s_pn_d_e_8h_source.html b/docs/manual/_s_pn_d_e_8h_source.html deleted file mode 100644 index d2cfecf..0000000 --- a/docs/manual/_s_pn_d_e_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    SPnDE.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef SPnDE_H
    -
    8#define SPnDE_H
    -
    9#include <vector>
    -
    10#include "Classifier.h"
    -
    11
    -
    12namespace bayesnet {
    -
    -
    13 class SPnDE : public Classifier {
    -
    14 public:
    -
    15 explicit SPnDE(std::vector<int> parents);
    -
    16 virtual ~SPnDE() = default;
    -
    17 std::vector<std::string> graph(const std::string& name = "SPnDE") const override;
    -
    18 protected:
    -
    19 void buildModel(const torch::Tensor& weights) override;
    -
    20 private:
    -
    21 std::vector<int> parents;
    -
    22
    -
    23
    -
    24 };
    -
    -
    25}
    -
    26#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_t_a_n_8cc_source.html b/docs/manual/_t_a_n_8cc_source.html deleted file mode 100644 index 9a6f957..0000000 --- a/docs/manual/_t_a_n_8cc_source.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    TAN.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "TAN.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 TAN::TAN() : Classifier(Network()) {}
    -
    11
    -
    12 void TAN::buildModel(const torch::Tensor& weights)
    -
    13 {
    -
    14 // 0. Add all nodes to the model
    -
    15 addNodes();
    -
    16 // 1. Compute mutual information between each feature and the class and set the root node
    -
    17 // as the highest mutual information with the class
    -
    18 auto mi = std::vector <std::pair<int, float >>();
    -
    19 torch::Tensor class_dataset = dataset.index({ -1, "..." });
    -
    20 for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -
    21 torch::Tensor feature_dataset = dataset.index({ i, "..." });
    -
    22 auto mi_value = metrics.mutualInformation(class_dataset, feature_dataset, weights);
    -
    23 mi.push_back({ i, mi_value });
    -
    24 }
    -
    25 sort(mi.begin(), mi.end(), [](const auto& left, const auto& right) {return left.second < right.second;});
    -
    26 auto root = mi[mi.size() - 1].first;
    -
    27 // 2. Compute mutual information between each feature and the class
    -
    28 auto weights_matrix = metrics.conditionalEdge(weights);
    -
    29 // 3. Compute the maximum spanning tree
    -
    30 auto mst = metrics.maximumSpanningTree(features, weights_matrix, root);
    -
    31 // 4. Add edges from the maximum spanning tree to the model
    -
    32 for (auto i = 0; i < mst.size(); ++i) {
    -
    33 auto [from, to] = mst[i];
    -
    34 model.addEdge(features[from], features[to]);
    -
    35 }
    -
    36 // 5. Add edges from the class to all features
    -
    37 for (auto feature : features) {
    -
    38 model.addEdge(className, feature);
    -
    39 }
    -
    40 }
    -
    41 std::vector<std::string> TAN::graph(const std::string& title) const
    -
    42 {
    -
    43 return model.graph(title);
    -
    44 }
    -
    45}
    -
    -
    - - - - diff --git a/docs/manual/_t_a_n_8h_source.html b/docs/manual/_t_a_n_8h_source.html deleted file mode 100644 index f8621f6..0000000 --- a/docs/manual/_t_a_n_8h_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    TAN.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef TAN_H
    -
    8#define TAN_H
    -
    9#include "Classifier.h"
    -
    10namespace bayesnet {
    -
    -
    11 class TAN : public Classifier {
    -
    12 private:
    -
    13 protected:
    -
    14 void buildModel(const torch::Tensor& weights) override;
    -
    15 public:
    -
    16 TAN();
    -
    17 virtual ~TAN() = default;
    -
    18 std::vector<std::string> graph(const std::string& name = "TAN") const override;
    -
    19 };
    -
    -
    20}
    -
    21#endif
    - - -
    -
    - - - - diff --git a/docs/manual/_t_a_n_ld_8cc_source.html b/docs/manual/_t_a_n_ld_8cc_source.html deleted file mode 100644 index 9c8daf3..0000000 --- a/docs/manual/_t_a_n_ld_8cc_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.cc Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    TANLd.cc
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#include "TANLd.h"
    -
    8
    -
    9namespace bayesnet {
    -
    10 TANLd::TANLd() : TAN(), Proposal(dataset, features, className) {}
    -
    11 TANLd& TANLd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -
    12 {
    -
    13 checkInput(X_, y_);
    -
    14 features = features_;
    -
    15 className = className_;
    -
    16 Xf = X_;
    -
    17 y = y_;
    -
    18 // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -
    19 states = fit_local_discretization(y);
    -
    20 // We have discretized the input data
    -
    21 // 1st we need to fit the model to build the normal TAN structure, TAN::fit initializes the base Bayesian network
    -
    22 TAN::fit(dataset, features, className, states);
    -
    23 states = localDiscretizationProposal(states, model);
    -
    24 return *this;
    -
    25
    -
    26 }
    -
    27 torch::Tensor TANLd::predict(torch::Tensor& X)
    -
    28 {
    -
    29 auto Xt = prepareX(X);
    -
    30 return TAN::predict(Xt);
    -
    31 }
    -
    32 std::vector<std::string> TANLd::graph(const std::string& name) const
    -
    33 {
    -
    34 return TAN::graph(name);
    -
    35 }
    -
    36}
    -
    -
    - - - - diff --git a/docs/manual/_t_a_n_ld_8h_source.html b/docs/manual/_t_a_n_ld_8h_source.html deleted file mode 100644 index 59cbc7b..0000000 --- a/docs/manual/_t_a_n_ld_8h_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.h Source File - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    TANLd.h
    -
    -
    -
    1// ***************************************************************
    -
    2// SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -
    3// SPDX-FileType: SOURCE
    -
    4// SPDX-License-Identifier: MIT
    -
    5// ***************************************************************
    -
    6
    -
    7#ifndef TANLD_H
    -
    8#define TANLD_H
    -
    9#include "TAN.h"
    -
    10#include "Proposal.h"
    -
    11
    -
    12namespace bayesnet {
    -
    -
    13 class TANLd : public TAN, public Proposal {
    -
    14 private:
    -
    15 public:
    -
    16 TANLd();
    -
    17 virtual ~TANLd() = default;
    -
    18 TANLd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -
    19 std::vector<std::string> graph(const std::string& name = "TAN") const override;
    -
    20 torch::Tensor predict(torch::Tensor& X) override;
    -
    21 static inline std::string version() { return "0.0.1"; };
    -
    22 };
    -
    -
    23}
    -
    24#endif // !TANLD_H
    - - - -
    -
    - - - - diff --git a/docs/manual/annotated.html b/docs/manual/annotated.html deleted file mode 100644 index 13be465..0000000 --- a/docs/manual/annotated.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -BayesNet: Class List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Class List
    -
    -
    -
    Here are the classes, structs, unions and interfaces with brief descriptions:
    -
    [detail level 12]
    - - - - - - - - - - - - - - - - - - - - -
     Nbayesnet
     CA2DE
     CAODE
     CAODELd
     CBaseClassifier
     CBoost
     CBoostA2DE
     CBoostAODE
     CClassifier
     CEnsemble
     CKDB
     CKDBLd
     CNetwork
     CNode
     CProposal
     CSPnDE
     CSPODE
     CSPODELd
     CTAN
     CTANLd
    -
    -
    -
    - - - - diff --git a/docs/manual/annotated_dup.js b/docs/manual/annotated_dup.js deleted file mode 100644 index 6c6009f..0000000 --- a/docs/manual/annotated_dup.js +++ /dev/null @@ -1,24 +0,0 @@ -var annotated_dup = -[ - [ "bayesnet", null, [ - [ "A2DE", "classbayesnet_1_1_a2_d_e.html", null ], - [ "AODE", "classbayesnet_1_1_a_o_d_e.html", null ], - [ "AODELd", "classbayesnet_1_1_a_o_d_e_ld.html", null ], - [ "BaseClassifier", "classbayesnet_1_1_base_classifier.html", null ], - [ "Boost", "classbayesnet_1_1_boost.html", null ], - [ "BoostA2DE", "classbayesnet_1_1_boost_a2_d_e.html", null ], - [ "BoostAODE", "classbayesnet_1_1_boost_a_o_d_e.html", null ], - [ "Classifier", "classbayesnet_1_1_classifier.html", null ], - [ "Ensemble", "classbayesnet_1_1_ensemble.html", null ], - [ "KDB", "classbayesnet_1_1_k_d_b.html", null ], - [ "KDBLd", "classbayesnet_1_1_k_d_b_ld.html", null ], - [ "Network", "classbayesnet_1_1_network.html", null ], - [ "Node", "classbayesnet_1_1_node.html", null ], - [ "Proposal", "classbayesnet_1_1_proposal.html", null ], - [ "SPnDE", "classbayesnet_1_1_s_pn_d_e.html", null ], - [ "SPODE", "classbayesnet_1_1_s_p_o_d_e.html", null ], - [ "SPODELd", "classbayesnet_1_1_s_p_o_d_e_ld.html", null ], - [ "TAN", "classbayesnet_1_1_t_a_n.html", null ], - [ "TANLd", "classbayesnet_1_1_t_a_n_ld.html", null ] - ] ] -]; \ No newline at end of file diff --git a/docs/manual/bc_s.png b/docs/manual/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/docs/manual/bc_sd.png b/docs/manual/bc_sd.png deleted file mode 100644 index 31ca888dc71049713b35c351933a8d0f36180bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ diff --git a/docs/manual/classbayesnet_1_1_a2_d_e-members.html b/docs/manual/classbayesnet_1_1_a2_d_e-members.html deleted file mode 100644 index 35b3392..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e-members.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::A2DE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::A2DE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    A2DE(bool predict_voting=false) (defined in bayesnet::A2DE)bayesnet::A2DE
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::A2DE)bayesnet::A2DEprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title="A2DE") const override (defined in bayesnet::A2DE)bayesnet::A2DEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::A2DE)bayesnet::A2DEvirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Ensemble)bayesnet::Ensembleprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    ~A2DE() (defined in bayesnet::A2DE)bayesnet::A2DEinlinevirtual
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a2_d_e.html b/docs/manual/classbayesnet_1_1_a2_d_e.html deleted file mode 100644 index d883239..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - - -BayesNet: bayesnet::A2DE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::A2DE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::A2DE:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::A2DE:
    -
    -
    Collaboration graph
    - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     A2DE (bool predict_voting=false)
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    std::vector< std::string > graph (const std::string &title="A2DE") const override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 12 of file A2DE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ A2DE()

    - -
    -
    - - - - - - - -
    bayesnet::A2DE::A2DE (bool predict_voting = false)
    -
    - -

    Definition at line 10 of file A2DE.cc.

    - -
    -
    - -

    ◆ ~A2DE()

    - -
    -
    - - - - - -
    - - - - - - - -
    virtual bayesnet::A2DE::~A2DE ()
    -
    -inlinevirtual
    -
    - -

    Definition at line 15 of file A2DE.h.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::A2DE::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 23 of file A2DE.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::A2DE::graph (const std::string & title = "A2DE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 36 of file A2DE.cc.

    - -
    -
    - -

    ◆ setHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::A2DE::setHyperparameters (const nlohmann::json & hyperparameters)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 14 of file A2DE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/A2DE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/A2DE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.map deleted file mode 100644 index 2ed4963..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.md5 deleted file mode 100644 index e47884e..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1a9d8b8ca8faca87b7939271324f2f54 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_a2_d_e__coll__graph.png deleted file mode 100644 index 306367d63bc5ae01d9bbc82dd3b2727c7319fd4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13836 zcmc(mbzD|mwC4{Y-O?h6AV`CRfP^AQhom4Ng3=(}DF{kSONW3+3rM%1NJ~jbN`rI@ z%zEy9@7z0eXFl`C%;)tr_?+iF`|Q2;UcdESzw<^-MV1hc77sxXLU}o9bp%0EhW|-$ zu;3>GGb|hM2bQs-tTb|g`Y)p)F9t!bA@b7qG~H4*etGI^I-g5!jhY!%%VqezbmbG^ zjP6#9O^6bF5gVIZm|Mwiv@xDE%)=3S%dzW|jZI~vh2i&Sf`VKeuN1zz}ZXkuEZW?*~_Wu8KM>yT&bvJUPD}jS;8L zAgHe^^)vW)I-2!|$j{HGsp8&FVj4*;xDQK}xAte=U#p{MT>oq}TI}(pL;3bEOi9Tm zk0%l4lM!?xFDEA_Eq9%XKFHuOCUN2_GX|Ch1m==R{k$iofy20dEt4&f#3ibqTngvT z-`RdK_Z{ZN?stw{mKL`Jl-t(F$_vB{eU2BfYUr?#-qbt6OXJ zx97CByVRHd6|Q`!uCC70)z{U9`q)ElZ7f9C`$S-FZm!gR{=xc06>%sPPjSM6kPw&s zG`1gWx)<4I}b4(3ZOZ`3j= zsA|dsf2lXM&3V)S+tt;TPQr_Nc6L^0@?CKblWfGy$m197e}2`G($KuIpYNE3p+2y) z<0WE{AV7F&!`;@3stPk*isItp7;oITl$48x7#kZ$rKE&iv8_gPcXt=|*fVe7tSYm3 zb1H%SJ)OSj=zhn)eRepl^X_6H;mO=uNmFsc^KlMINro3qXD$sD-pWmBR1_4me~)){ zy#7qqI9{`GO@8(2)d;cK^Q2tHJ9p|j4s|&x$tfvEYI^?u^@>eMn9zFc45*IW+{#1{OiL(7fin&Kh$I6 z~JE}(k(^5x9t=8H2U)kI#jva&L*@#X$Z42kn26XdR?CA)3o zv8mJgPtwN5#@C^t<$v5DE@Th?{30bM4^&ANWn^Q+ZO$oCG&D4PRO`exUTKB>DMGBQFF>w|g34h{}>n+=C^Fy+_?r(Ok4TM%LSi0koQT%r<-zVF%o$V$?QZ2|G; zRWXO(I4+x0;qJSO_wovAS4N5rLLs1bLYxh3t_q5~t`4zPSPWu4$R>UI^r^7@9Hy~} z$@XIMi@7#p$uC>8ZB`py@A%DT78iqt3v{wI@>B?gD(s6YhrCe>-7!{fW<%6IkT=w?%I7CDbw6(PjgbKV}{!G$5=cRt6BQGzH*_@b2y|}Qz$Hw*s4Gk?UG?YpH zU}GX-ZL}mW*P{FT_pH1;RtZfg3Cr3x6_4O&t?-CQ`czAf?V`EFJs}tdPn8D|% zZ^ozM<`oxD{Z;3>^yzt*+uRpi4^PkX($c7fg$4a;J4S3GI=N^ucz!fqcJ`15*>5{L zJNFI`mmmzx%ax<8ryIpDlaUpkDagsqTzOG%-)<4pDUGCvx!;0q)|Hp;lXN)c$#Zsg z=6B$?Cb06D@7CF;myHPNJZXIlpIRAZR)R8qeuCMN1toh@{Eo$Zf`Jo`ox{d@F@Z;y779-n|fEc5Yvq~s^% zWFdifO5NSv@9XOBNS?0qM?cfnrmS<_?1kf^VEjBbDd{_W;4O2y`y$PhT^k`>S~%!Z zv^A(IIbg(VU0Btxq^MZl>v^)0Ct}o$=y6igi+jW-2P*`4A zcy3@1k)I-DLo4sFF{RN*JrYJdlkoaWsQr{j(G;Rn%EZP7dd@&4hMN+V|U!?Oa`D-Q84Bk#TgHr zvuZZ$>y~RDx;%=N4MyBIry4da%gZeCPkmmYK0NKU8}4kL`BJ=#fQTrlsY$Z&;@oq6 zyb}NLmn*}`-b%px_sr`*%P>euNfB;?98y|Zy@dwYvPT0?1RMFg)keHLUdf@Zp+QPT75w}6v%tVW1VP8ZDB4WE^&BrN zE6eWU?6B?EuU{T!HzXw`kB*M6F)_8(M)#$Ohr-^Tfibqtv;^?k&q@DYTr?j0^xWM*NK1_3V;&?CNYTdevqc_0W9}JJv}{} zyoyRf>*0rw9z9y~DDFD>u<88AoXdN9bFzm2d^^(DXrxfL`s`q0c7EPbt1ImF>$}Fr z*L_Y_SSMX3Y^v9a>qVdLFFj?=*(&d*9&Z=Kfi3MlA7n>%Q2* zPZMfBW6bf-HmAX-UOg(9S_C)@qE0x;w_kL8d2{(~S{l)d7cVd`T|z@XTaUf0s1R7| zAi&2DNKU?z=CvcQlqNP-+aeoA?f>#6`j@X?1DJ2!xc77>$^@DF?c2BC`ub$+ zTsGi`59f8qzFSw~A|4G>qUJ;hEJj1>#=rZ}j#g zpcVM`&(@-+r+0&6WxMyzrqS+V5AQprn>;*USBDGA92OM1)5Poano2%L6d3d!6z(o& zq!y0oO;K#19poyxh&(BWV+S@NdvT6&V;OH+mQ(bHM20<9k;QN;} z-TQ#XPtk0q>1YmLDMffY#98FdooqO>5=9(YV4y)?={*ZaoSn6bO_j2!a8fBi-;kZJBj}sQxl1~MUDDCpFS4TP9&NtP8@cAG)bZ$ zx+*GdW@fgQnA^}LKpXDl?7YBHQZE(F$;FieC-@Vu?RNGq-3oKk)YMcOYHC#0gQ#j7 ziIIl=7Q)wq2RY2i!C{W-iPyt5mm;+ntS{NSy1VP=h#>9fvok~#7IIo9J&4x-^bEJH zt*zvzVY_bg6W_DS?_SD-M_oKkTd<=>Tvk8k3d!r;U)1}E(p_-UGV7|Vx84sX+Wy@c zV%+%Cyd($8^ zK4+)>Fis0!IaTG5qf`0Qps-5($VgT8_bwg0gXzGsOK>PRjhO5vTb`5(XyxRk*6%fP z+V2c0MHJ`cGwN9 z69^Dxy?IWZJYE&~GCDKON?NM??Mbr#D9H57ch^GP@p$jIyhq!#Fs(m1|MhWElAK8| z&^@ErdwQtOxmgnDKwFIxQ9&{g%aD0`m6Z#5t{$8_a^^zDgO`u9BHYpv(n~dX{rf+Z zhBaR)ko|Zf#&?}Ildwfrzqc+{`MpYV-UoDnmkL@nfod3bJ4%+*hPxT-b$RKf@>1ob z$=ei(B*wl(FEt!2H5xW|E@WK0O!z|i8)Kw;0~=Oz`FqPeZttK1--vvH zoTIzemQ5Yo!QYZeYpNSaA4}+`VsE{;IplPpuiE3v=JQbH<0e*ARQU;U`?c5S4Cx5-;_bkOG zs#Q8bT}@N-D~@5FK*3+{u*{s*X$kos`hAp5u6L?z!YEQm?RlKJjQx@I-j?r^VGFda$PY{{3q)L>-o^A=U)PS*Y_e>|R%jt; zMmJKV(or(cne{=JN62mnCszqF28)poFCn(MbEP!cr;YMg8JLGRpNMMuhw2RA$&QXq z%9{%@_EOe=B*nu^cXDof?>_szo>?l6f@;=>#1run;d+}HQLLfwX(dJE9xJLVflX34 zXwim>DkelM<;R7jn%CXs}B1vh9ziwGXt9$&O{z_-{SM zFsQFDMQc{ec{&t=Q`t8l_(t;22HNSwT2JrVhr#m`JB5pE*pN9e4W>TCy^#pPsK8`{ zsFe5oa#EnV3XCN4drSUnPwg=6Iy!?GlAc$Aru>5Q$o{y9m$Y#pW**6CL<){&Zv3H6 z?(Pzwf3r5bmxQ?gY(%mA>&3fLZY0flct>I^Z+#t{l(S4X_axREJU+Da z3^?OVz<1PyKm4w)85m4n_UelnSxWd|$en`|;Wgza$$eFZbIW>xHe^X$5IN69o`f~s zeaio)FRRKiG24plVpnCeZHm)T8MA++b8P2h_8RGDdGpUCSF&Ssmc??Vp7N7_R#BZX zfZ^!lDK$*(-9VExW99Pl*zpsP9c8wTDPQ914kUEi*=e=R;iYeG;CS${gw8-iv2t}} z$i=k11g%2bbZP5nTU82b;4UzXez@Fn?w(5IH(R#B# zMv*mVHlcjyOVQ|(C9bRa#$?+>{wvHZg|tPVMQh*3+kTC>>JNHb7Wsmfh|wJIyD3hc z5{bmHd#G^sPu%w@6NMa)Kxes*tg65 zC2Us6Ddl7FKNPKHMnmi_^(X%hSIC!*RaeDWE*f3KK*Cs#KeQN`*Fo8!BARN;)VTr) z)@E~kee!BEH9)F&o`-*&M^~KIQigp5D4^ks9u_ax`W}tOuW%n3!tbpf?u6JWV5D-anRk zKiKC|Gte|!I~SKUoNKINVt*YGYB9Gh8e|O#k4+L5@C@_RWtDeF**$l1l=(>i+p1C8#Yk_GdmgG+u>AggIH5SZ+J zG`lKw%LesTe&jX{LC`jHT#FGkUIvN)k@+1K8`QDHXadYI=rP?DioU#7FtR8mrJf!biVySlb>~Yn+J(hpXDid@X-yv^=A=$Yv|bAGephS;nQCW(;b^J!ZLjzuMgOU z0dwX30*JW8E?EUn>cTv+^!xW;Itq&C`G56|jkAJ7L%YI}PoN(8uVjtnsz_=4bXgJY zy^Z_VfK)>#OxxRm@CbOt9UuJ8d*Zw=cg9utR+5ykg$23||E z+TC+P?-{&&6qRj7D)pL$QS>d3ENeeq>bEB0T1v)1bFy4kJ0B->uE8qDkNG(B-B zz9v(N(VS1#U@=s9S-cC#&Igy5>^=Fz?E?eTMBFY; z%B^M00_}oSsoyTJ=bUA_4f*uWCI4!aT``1B*&Ra@-I;$bLlT_tOw6rb)Q-@6 zadU=^oijpZ#w4P6>0?cND&rQz?ebl7TqQ>7hUCUn)xSPh^YpWr0!f@nQ@?%9zWi-@ z!)s)q5{FSbhF9Fb+*figWesu}NtS#fOsLPrLce1~F^ZoD!iB;xt9vdIo6CCao`)kt zkEd3=e@+ZIzs|kan-+>y?ogqZOHS|K`Zp1?L!_1-af55lMP&lY72UJ(90uIv%|oy% zjo<63%sfTk&ANQ_lF3SUWb^Kmt5F~PHuuxoZ&_bkmFBjkA|g$Nqp<4(ukWzjzWRNh zi-tzFGr9d7^~ue3EdiJD;;kP+#rFi1$&y;1=DskiP=7>ZH1Pf5>boGlKM+tSq(^wo z5)C>7!njILiE))@)dt?A5Y34TsM&FEI@(=x8h25<5l8765mQHj>j^Vw_aTmHnEmD# zbT@WU|B~TT^i)m^WZhchkEk}fhCZRl59{l|FpmS(SBYdtA3pK9#eBg0jJOTv6*bbz&Z@>f7-5)GspW6qlL`@JR+I0TyEmQUW z$m254LtE(w4~!?P?T?O^(n;y)!XTGG-h03_<*~+P^})aj1c98qynn6*;s?~1nU!@u z=!)%KLqqxqdT~9TE($6A4uFtjQDHRnWLah7cXYL zczb)(T)nCc9FILm*k%0@B^6Z+Gmv6xa&l>)_RwjHh?G1RmUsAjv>o>5P1$FYTkn3t zIBdr&-Y~z5j&6mC0-#V1oWtw0yki>j^vR1OI>U$DX+4y}>@@(%i8n2*W z<@m|BZ{KEsa>;2E_au$HDv}uU;O62AFM3>MYH!cCS--0yDk3s4I2d#BcS*9ww1;*I z&ioM}%T-SR#0CZiHI~Edz}M}7899&tfr?wx_=P#Tk&+U@?#@nPZ0r|5Kcu6*{Vg+G z&;{`6v1CSCTAGr){A>{6mF4;QHo!B{&w!CN)Ym@(crZ6-3}D8er+y2aN58rmdSlR| zNbQQ}nnyk9#zqe$@c4uT$Jy3bbi#JmIu$c<{T@Di2oOX`MI{%gk0j8uWSi*WNCBAZ zqmC;t^zA+VVeR8q4({e772K9<8a8J|N5t$mZ@z|x2d=zBdk956Ks$LL#vGP(0_G&} z+23*+uM6x2GvCF>o2DKDp>=HbL#ueiDdw?vQ&73w=NquOuA?J2Xeab{b#>8d{@+0D zAMA_{CwmrFT%hh29Q(x0%9VdKmMr}TVm+!wr2KfTRXct4$Mm?=pf(I}vcc0e^~4Zr z)TiIxWSD;Ze+iW70kN(%0d0L~XlPrm?0Ma9mD*9S!Bs793o|qcGM(a1Z@ZlZmSW;rSyyqc~%s>z2?r5>W+oYtB>S|%w*i690 z5fW-@bMNU`HVqOAidUzbO$^YVqZW0#>8F^vG(R5@7Dlj!eG0g!+HMxz=XB#X0lgUY zWmXkwTU&16*3H&0Kdn>TTg(&t^2 z?{ji=132Maw6(Q$+v#NGbKiMp^)sBB4;^OYbz~&A{Ih4zu3f*54h<<;1qHn8OiXXn z(<5Cr#u=|)Z}sR5=lVR3i8L5KSvZgShqo3BZ_Lj6LvQ9PY&#;M7gGc=oq@1D3Jn`* zIdqD@z!Mj6O^?);4(AnYl!$v%N&UTd5Mkl6HWChO9S*%bmArWXZ@PwtDlwg3N=tcB zXAF?`6afn|v+l$es84wL`D2(x{x6uPdmLY52%ls$>R#y{p|TST2trYb@&c@~!FKx% zT_hD~CxfJoXBL4L-_*bGPww;)fpAC|c>pC1^!1llR~1n4Gv@ng6}YA|P;5h!e+ldk z0h|4X+^#H3CKJ>VqH3-k|L$EU;CRbj)l^Zfh5PT~;+{8nnRiCtARs1gGWMh}Yldd# zDElrjRGy~4t#Is(dvBO2+eB9cC5tO4D7Y>6Gp32Te^RL&s^GTXUy0nSy7kz*DgpZT zar!pqP)M{k zqT^ZBjb}qfOAMEt-|L%#eEQs-ENkF|&Y#uv` zL4DXqu3nnkg_eF^U3rcB0P35fTsB2$dKPS-YN}VB3A>UHNh-22f z36CQ{l6{ZbUx8RETS`7>1wRBQY^CMVXfL+&EfsOn=<}el><;1 z`#<$?{QtS!!3nMPGjv9=9QKmY95ht)xhsV za&ze^b-T7m)06k+>TeM7@P%eRua04TP8{fZ4;nF#Lt0%#T%7L>B1{VD&s`un}^ z&hNPMTb}drXM&QZ^V)1h3pF^zL0?T#q(i@nejGaU%@kVCt?E)Fed&1`kFFbf?`u`V zp3V?`N(`#j^iz3x8E6C9gzex<*w}4GyhF$Pn@txIM0CP_Q2%RsMiqWlSnC*Z;rmw) ziJG?dNVC?P0!G=So<|QKlFDVl7936kP(tVB<&_cZEs4j$$r+fCK;=~X@nRZmE9GW= zS>C4yI$r7R#`o;)w<#iziib>nd;qQ8J9_yAMI(|m%?%ylecFoorK3aJA{&^?(b0S)8j_!% zUwyooJOGU8=;Y)&H+QcG=560|FQ?6^tM~5RTOP{43>|tz|3qPRVc}JdVnP;_=Ue;x z?NN;Pfi^!Y?~(96xyH(hjdBG{`CfP<&CuoM1*K`_ouE3J`&rL&HK0gTHBAf`q$A3~ z0Y(MCk`kUY=x&Q0PCA0C)2tHyflR+_N=%c-d;NPN%S-9@Ol^}qRJU`I2n zrU>6d!a_o_pvB_ga0|>1$Fso<H@rME0+0Y)JSjH8p5XxyHXcU0U>4 zgseYQQa<+nP_&7lI?}gp-%eog+CoFK>rUkB?(CdRc;X|EbocaB))?I4=g0Mf>{?lz zP>a$V3WQi~V!;~~Qo=umgG}}GlANc&j?jaKfdwjm3p(OM0^uSeA_CL|koCFd=jWk0 zB?T3fm0Ej8hXVvPb7!U1=#SCS1h^>(Ncfd<$CX<)g06G^Yvf>i`>Rk&t~v0ye6XNZ zR8%a$99|jBE2<3pul9oy@}x>!0)pRw8AWWyE7&7pwMX-B*hw|N=NDat{MSW~JMrDsO23IU6x#NbvdXSFB0}6LKSl0y`(el0r(o8J**AKG& zbwNQ2aOudYs5}7AfuEwQ>PM7OL0U#;_WX1+7|w_wqN{i_>iz%p{|}Vg<6~(o zUxwuJVN>r~b*|4RMg=O$gC8s1MYL%{3oYt27eDM@UsX}T6ub}n9Q*@V2;G0)8^^x$ z-$^yV7;M$7W~r{!g2&!b_VnGiu)@L=;5*wa>%b3=Ez@ZiISIz1|WRXm3(4Aymd zq+aXk_avG^CzG0#^q#M;@2ZoiN}AX^a1(*W23qte>IQz1X89Nvdr%ka;Q!+1=a-Lm zTOlVQZEYDPa2tFWT@!I$)r^me8?Y8~?9aFdu9&A6=V#E={kG7RphF{D zNX@|93HRF0&rAC>#v%`1vUw+0*CjBA!9ACH7s78(ncFPwtU$^@ubwl34+~k94P!rc zHk>krqZe%p>;xl+tNR{*rWz&|UGl|pbtgRX@j-@gB{gK~>O%SJ=-}|NN78vUb{|6_ z8q6ZFv6yR~b&`SW@<~}kNO^D5`H5BBaZ>I!Y}eVA0PLcTAuW(%&%oCMt{a05gQ9WN z8hQ>_7!(ihK*A3_kd+#whkZ9$=gI>}y%P$~k+o0KXVLwIPj2P1AqWi(O`@O`CB66F zLpa(y1{R=w+d1ZlHuGbF2fEjg-(EjZjrjLI?>{L$%tDCt`1p9IfaD=-Qm%+dZP22U zRQVfW_nr6Iisnw=GlTJ!BDk~pqWdaIvTBzxi_f7=DpE@{@abD(u6cB>uYxL>FE`IC zeNA@SSkOq(u^fLi@cv-t0yP}?BxfGN@}~J2qKU_pb$NMy*+aUE5rk0+O?p|;^*`tt zZY%apfH1j&QA&)n_jT*0ue1i50x7Y`=j#K}s87qTY-P;l{AA9^CJLZG2}`9jNHB+< zo=nUwuD1qqf$C>3rnUUW#%O$9o*85<0H;?DiEu;wa=t6I>Z1ADE6HT#pu}I#eYNVp zW-syZ7|Wh)VFhb4>yd*pde$xXj0d^xPm$;U@#bg>?>64O|8X!V^j2I1HR=(O@?foSZA8#r zN8Jd~0tA`wZh0Y)V`pYf?%AQhef>Q&|0+^M~l!zEc4xNF*{kQ$rn5ed* zkj?ltUf%wJ=dZ1p!TSofJO?M5Iai4E|LtVxI}E*C0OJy5;OdL>)2jv{_fte1v4C^o z5E9D3IrCBciN1aq)Tf{bv%vmhXK#;&ctK4HJ%Osm;yJRCE}mV06<5L@%u^(IgS9OK zylJDQx3e<8y*0(x*3=9HX&_P?CTTrY?+&Oc@z>@=nF%(a$~P!IIPM4=w1vMC<6pux!zoum)l#mQ(>DWI{aiqB=Pn}#V8-n4-3hUv3b zqM4M@keggwm*hb<>UjPERbdX6yx7#H`Wo<~ zjX{17=*MPjp$V`?A9xUrqH^Cbif!Sj+A$Hb_E0j*&g^nw06m%p2CU59(cD1}|ha1n=V8)Kr`D9u8b0q7IakI;FR-?<;uF zNNC}03~F8@1T3yWt*xz=HdkR+K`jRQzeG^e>IW1ZYrDD1yE%{b`_t7gK;Z_JG?CV z3j_k6@fREFG9tx3l|-DxTaF;F*;BYAAw;{AvU($GjhazpT z9vK$2@tnHofX3_hekgA3?G;ukmydx?)Z5Yv@YvE(U5Q5-Csb| z@PV-z3Iw7ey-F##5gLL`OfPL{m?rqmwt5x|wwU!~HECvM<_K@yN^Y{<_MFW6bQ1$J z3i|<`za}C=1HL~u=qcOJwqA1c@R$QLeX+wE6=jt55p1>R^OYH4X1j-Usnj0e0BCAuL7V19~(==y6M&Azm^qai}Jldr?C+(t+K z{{7oupu;oiefVnxe}=;g&SI3Ix?q20%q+d=K+8~okZUo1luO3idi}wR7n|D$Q-Rf` zr6e%r!>zyJl@l;XR~ho_!rYA%J-*L&DWJs?X9VQd4CEM`RjXjwMp*NJMKkzy$g|-QIRf|GJ5%603tKBW&i*H diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.map deleted file mode 100644 index 3933e10..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.md5 deleted file mode 100644 index 2430de2..0000000 --- a/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2a4c640dc60ff5b335609cbf09ecb998 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_a2_d_e__inherit__graph.png deleted file mode 100644 index 71e485d88a99575ca14d23e1460349412472bee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9888 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 PIYUr)74GETHt_oo+?oU` diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e-members.html b/docs/manual/classbayesnet_1_1_a_o_d_e-members.html deleted file mode 100644 index 910d05f..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e-members.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::AODE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::AODE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    AODE(bool predict_voting=false) (defined in bayesnet::AODE)bayesnet::AODE
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::AODE)bayesnet::AODEprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title="AODE") const override (defined in bayesnet::AODE)bayesnet::AODEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::AODE)bayesnet::AODEvirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Ensemble)bayesnet::Ensembleprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    ~AODE() (defined in bayesnet::AODE)bayesnet::AODEinlinevirtual
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e.html b/docs/manual/classbayesnet_1_1_a_o_d_e.html deleted file mode 100644 index 1c6cc5a..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - - -BayesNet: bayesnet::AODE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::AODE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::AODE:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::AODE:
    -
    -
    Collaboration graph
    - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     AODE (bool predict_voting=false)
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    std::vector< std::string > graph (const std::string &title="AODE") const override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 12 of file AODE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ AODE()

    - -
    -
    - - - - - - - -
    bayesnet::AODE::AODE (bool predict_voting = false)
    -
    - -

    Definition at line 10 of file AODE.cc.

    - -
    -
    - -

    ◆ ~AODE()

    - -
    -
    - - - - - -
    - - - - - - - -
    virtual bayesnet::AODE::~AODE ()
    -
    -inlinevirtual
    -
    - -

    Definition at line 15 of file AODE.h.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::AODE::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 24 of file AODE.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::AODE::graph (const std::string & title = "AODE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 34 of file AODE.cc.

    - -
    -
    - -

    ◆ setHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::AODE::setHyperparameters (const nlohmann::json & hyperparameters)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 15 of file AODE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.map deleted file mode 100644 index 12e0d18..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.md5 deleted file mode 100644 index e6b0ce6..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a8ecb4b4827a401aa13582922068e79f \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_a_o_d_e__coll__graph.png deleted file mode 100644 index 76cba847d662acbdfaf60ee7bc5f8f88d3c9a654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13955 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 diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.map deleted file mode 100644 index b9bbc8e..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.md5 deleted file mode 100644 index 349ca86..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6e36b83aa01980726c9835edea89fb3f \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_a_o_d_e__inherit__graph.png deleted file mode 100644 index 84bdbab593f7163ed7049b04da4cbf725943e61b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10014 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 diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld-members.html b/docs/manual/classbayesnet_1_1_a_o_d_e_ld-members.html deleted file mode 100644 index 761d28d..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld-members.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::AODELd Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::AODELd, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    AODELd(bool predict_voting=true) (defined in bayesnet::AODELd)bayesnet::AODELd
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::AODELd)bayesnet::AODELdprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(torch::Tensor &X_, torch::Tensor &y_, const std::vector< std::string > &features_, const std::string &className_, map< std::string, std::vector< int > > &states_) override (defined in bayesnet::AODELd)bayesnet::AODELd
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="AODELd") const override (defined in bayesnet::AODELd)bayesnet::AODELdvirtual
    localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::AODELd)bayesnet::AODELdprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    ~AODELd()=default (defined in bayesnet::AODELd)bayesnet::AODELdvirtual
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    ~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld.html b/docs/manual/classbayesnet_1_1_a_o_d_e_ld.html deleted file mode 100644 index 8598fec..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - -BayesNet: bayesnet::AODELd Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::AODELd Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::AODELd:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::AODELd:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     AODELd (bool predict_voting=true)
     
    AODELdfit (torch::Tensor &X_, torch::Tensor &y_, const std::vector< std::string > &features_, const std::string &className_, map< std::string, std::vector< int > > &states_) override
     
    std::vector< std::string > graph (const std::string &name="AODELd") const override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - Public Member Functions inherited from bayesnet::Proposal
     Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    void trainModel (const torch::Tensor &weights) override
     
    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - Protected Member Functions inherited from bayesnet::Proposal
    void checkInput (const torch::Tensor &X, const torch::Tensor &y)
     
    torch::Tensor prepareX (torch::Tensor &X)
     
    map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
     
    map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    - Protected Attributes inherited from bayesnet::Proposal
    torch::Tensor Xf
     
    torch::Tensor y
     
    map< std::string, mdlp::CPPFImdlp * > discretizers
     
    -

    Detailed Description

    -
    -

    Definition at line 14 of file AODELd.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ AODELd()

    - -
    -
    - - - - - - - -
    bayesnet::AODELd::AODELd (bool predict_voting = true)
    -
    - -

    Definition at line 10 of file AODELd.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::AODELd::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 28 of file AODELd.cc.

    - -
    -
    - -

    ◆ fit()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    AODELd & bayesnet::AODELd::fit (torch::Tensor & X_,
    torch::Tensor & y_,
    const std::vector< std::string > & features_,
    const std::string & className_,
    map< std::string, std::vector< int > > & states_ )
    -
    -override
    -
    - -

    Definition at line 13 of file AODELd.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::AODELd::graph (const std::string & name = "AODELd") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 43 of file AODELd.cc.

    - -
    -
    - -

    ◆ trainModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::AODELd::trainModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 37 of file AODELd.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODELd.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/AODELd.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.map deleted file mode 100644 index 4da9f75..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 deleted file mode 100644 index 7e928dd..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f651d150c08db011384ec50dda3d8bd9 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__coll__graph.png deleted file mode 100644 index 3bab28d68e5c226d86c9650816c4b2fb56683b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16871 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 Ay8r+H diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.map b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.map deleted file mode 100644 index 98066fc..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 deleted file mode 100644 index 2b66607..0000000 --- a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cb0c139611e4782226f297a1cfe9fbfd \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_a_o_d_e_ld__inherit__graph.png deleted file mode 100644 index fa6fe72a415fb8b0fdf0462ce25992cef040c4b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13060 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 - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::BaseClassifier Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::BaseClassifier, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    dump_cpt() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getClassNumStates() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getNotes() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getNumberOfEdges() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getNumberOfNodes() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getNumberOfStates() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getStatus() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion()=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    graph(const std::string &title="") const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    predict(torch::Tensor &X)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    predict(std::vector< std::vector< int > > &X)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    predict_proba(torch::Tensor &X)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    predict_proba(std::vector< std::vector< int > > &X)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    score(torch::Tensor &X, torch::Tensor &y)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    setHyperparameters(const nlohmann::json &hyperparameters)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    show() const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    topological_order()=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    trainModel(const torch::Tensor &weights)=0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotectedpure virtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_base_classifier.html b/docs/manual/classbayesnet_1_1_base_classifier.html deleted file mode 100644 index c423364..0000000 --- a/docs/manual/classbayesnet_1_1_base_classifier.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -BayesNet: bayesnet::BaseClassifier Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::BaseClassifier Class Referenceabstract
    -
    -
    -
    -Inheritance diagram for bayesnet::BaseClassifier:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    -virtual BaseClassifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0
     
    -virtual BaseClassifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0
     
    -virtual BaseClassifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states)=0
     
    -virtual BaseClassifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights)=0
     
    -virtual torch::Tensor predict (torch::Tensor &X)=0
     
    -virtual std::vector< int > predict (std::vector< std::vector< int > > &X)=0
     
    -virtual torch::Tensor predict_proba (torch::Tensor &X)=0
     
    -virtual std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X)=0
     
    -virtual status_t getStatus () const =0
     
    -virtual float score (std::vector< std::vector< int > > &X, std::vector< int > &y)=0
     
    -virtual float score (torch::Tensor &X, torch::Tensor &y)=0
     
    -virtual int getNumberOfNodes () const =0
     
    -virtual int getNumberOfEdges () const =0
     
    -virtual int getNumberOfStates () const =0
     
    -virtual int getClassNumStates () const =0
     
    -virtual std::vector< std::string > show () const =0
     
    -virtual std::vector< std::string > graph (const std::string &title="") const =0
     
    -virtual std::string getVersion ()=0
     
    -virtual std::vector< std::string > topological_order ()=0
     
    -virtual std::vector< std::string > getNotes () const =0
     
    -virtual std::string dump_cpt () const =0
     
    -virtual void setHyperparameters (const nlohmann::json &hyperparameters)=0
     
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - -

    -Protected Member Functions

    -virtual void trainModel (const torch::Tensor &weights)=0
     
    - - - -

    -Protected Attributes

    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file BaseClassifier.h.

    -

    Member Function Documentation

    - -

    ◆ getValidHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > & bayesnet::BaseClassifier::getValidHyperparameters ()
    -
    -inline
    -
    - -

    Definition at line 40 of file BaseClassifier.h.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ validHyperparameters

    - -
    -
    - - - - - -
    - - - - -
    std::vector<std::string> bayesnet::BaseClassifier::validHyperparameters
    -
    -protected
    -
    - -

    Definition at line 43 of file BaseClassifier.h.

    - -
    -
    -
    The documentation for this class was generated from the following file: -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.map b/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.map deleted file mode 100644 index 4ee5c66..0000000 --- a/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.map +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.md5 deleted file mode 100644 index 0904b24..0000000 --- a/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -db5ef66c6a031328c592dde37edf565d \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.png b/docs/manual/classbayesnet_1_1_base_classifier__inherit__graph.png deleted file mode 100644 index 06c4ed899875d509921ee1faac49141a7a9dfc4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43173 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 - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Boost Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Boost, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    bisection (defined in bayesnet::Boost)bayesnet::Boostprotected
    block_update (defined in bayesnet::Boost)bayesnet::Boostprotected
    Boost(bool predict_voting=false) (defined in bayesnet::Boost)bayesnet::Boostexplicit
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::Boost)bayesnet::Boostprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    convergence (defined in bayesnet::Boost)bayesnet::Boostprotected
    convergence_best (defined in bayesnet::Boost)bayesnet::Boostprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    featureSelection(torch::Tensor &weights_) (defined in bayesnet::Boost)bayesnet::Boostprotected
    featureSelector (defined in bayesnet::Boost)bayesnet::Boostprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title) const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    maxTolerance (defined in bayesnet::Boost)bayesnet::Boostprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    order_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    select_features_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    selectFeatures (defined in bayesnet::Boost)bayesnet::Boostprotected
    setHyperparameters(const nlohmann::json &hyperparameters_) override (defined in bayesnet::Boost)bayesnet::Boostvirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    threshold (defined in bayesnet::Boost)bayesnet::Boostprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Ensemble)bayesnet::Ensembleprotectedvirtual
    update_weights(torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    update_weights_block(int k, torch::Tensor &ytrain, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    X_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    X_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Boost()=default (defined in bayesnet::Boost)bayesnet::Boostvirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost.html b/docs/manual/classbayesnet_1_1_boost.html deleted file mode 100644 index e0db539..0000000 --- a/docs/manual/classbayesnet_1_1_boost.html +++ /dev/null @@ -1,845 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Boost Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -Inheritance diagram for bayesnet::Boost:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::Boost:
    -
    -
    Collaboration graph
    - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     Boost (bool predict_voting=false)
     
    void setHyperparameters (const nlohmann::json &hyperparameters_) override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    std::vector< int > featureSelection (torch::Tensor &weights_)
     
    void buildModel (const torch::Tensor &weights) override
     
    std::tuple< torch::Tensor &, double, bool > update_weights (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)
     
    std::tuple< torch::Tensor &, double, bool > update_weights_block (int k, torch::Tensor &ytrain, torch::Tensor &weights)
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Attributes

    torch::Tensor X_train
     
    torch::Tensor y_train
     
    torch::Tensor X_test
     
    torch::Tensor y_test
     
    bool bisection = true
     
    int maxTolerance = 3
     
    std::string order_algorithm
     
    bool convergence = true
     
    bool convergence_best = false
     
    bool selectFeatures = false
     
    std::string select_features_algorithm = Orders.DESC
     
    FeatureSelect * featureSelector = nullptr
     
    double threshold = -1
     
    bool block_update = false
     
    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 27 of file Boost.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Boost()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::Boost::Boost (bool predict_voting = false)
    -
    -explicit
    -
    - -

    Definition at line 13 of file Boost.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Boost::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 71 of file Boost.cc.

    - -
    -
    - -

    ◆ featureSelection()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< int > bayesnet::Boost::featureSelection (torch::Tensor & weights_)
    -
    -protected
    -
    - -

    Definition at line 102 of file Boost.cc.

    - -
    -
    - -

    ◆ setHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Boost::setHyperparameters (const nlohmann::json & hyperparameters_)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 18 of file Boost.cc.

    - -
    -
    - -

    ◆ update_weights()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - -
    std::tuple< torch::Tensor &, double, bool > bayesnet::Boost::update_weights (torch::Tensor & ytrain,
    torch::Tensor & ypred,
    torch::Tensor & weights )
    -
    -protected
    -
    - -

    Definition at line 123 of file Boost.cc.

    - -
    -
    - -

    ◆ update_weights_block()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - -
    std::tuple< torch::Tensor &, double, bool > bayesnet::Boost::update_weights_block (int k,
    torch::Tensor & ytrain,
    torch::Tensor & weights )
    -
    -protected
    -
    - -

    Definition at line 150 of file Boost.cc.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ bisection

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Boost::bisection = true
    -
    -protected
    -
    - -

    Definition at line 39 of file Boost.h.

    - -
    -
    - -

    ◆ block_update

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Boost::block_update = false
    -
    -protected
    -
    - -

    Definition at line 48 of file Boost.h.

    - -
    -
    - -

    ◆ convergence

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Boost::convergence = true
    -
    -protected
    -
    - -

    Definition at line 42 of file Boost.h.

    - -
    -
    - -

    ◆ convergence_best

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Boost::convergence_best = false
    -
    -protected
    -
    - -

    Definition at line 43 of file Boost.h.

    - -
    -
    - -

    ◆ featureSelector

    - -
    -
    - - - - - -
    - - - - -
    FeatureSelect* bayesnet::Boost::featureSelector = nullptr
    -
    -protected
    -
    - -

    Definition at line 46 of file Boost.h.

    - -
    -
    - -

    ◆ maxTolerance

    - -
    -
    - - - - - -
    - - - - -
    int bayesnet::Boost::maxTolerance = 3
    -
    -protected
    -
    - -

    Definition at line 40 of file Boost.h.

    - -
    -
    - -

    ◆ order_algorithm

    - -
    -
    - - - - - -
    - - - - -
    std::string bayesnet::Boost::order_algorithm
    -
    -protected
    -
    - -

    Definition at line 41 of file Boost.h.

    - -
    -
    - -

    ◆ select_features_algorithm

    - -
    -
    - - - - - -
    - - - - -
    std::string bayesnet::Boost::select_features_algorithm = Orders.DESC
    -
    -protected
    -
    - -

    Definition at line 45 of file Boost.h.

    - -
    -
    - -

    ◆ selectFeatures

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Boost::selectFeatures = false
    -
    -protected
    -
    - -

    Definition at line 44 of file Boost.h.

    - -
    -
    - -

    ◆ threshold

    - -
    -
    - - - - - -
    - - - - -
    double bayesnet::Boost::threshold = -1
    -
    -protected
    -
    - -

    Definition at line 47 of file Boost.h.

    - -
    -
    - -

    ◆ X_test

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Boost::X_test
    -
    -protected
    -
    - -

    Definition at line 37 of file Boost.h.

    - -
    -
    - -

    ◆ X_train

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Boost::X_train
    -
    -protected
    -
    - -

    Definition at line 37 of file Boost.h.

    - -
    -
    - -

    ◆ y_test

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Boost::y_test
    -
    -protected
    -
    - -

    Definition at line 37 of file Boost.h.

    - -
    -
    - -

    ◆ y_train

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Boost::y_train
    -
    -protected
    -
    - -

    Definition at line 37 of file Boost.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Boost.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Boost.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost__coll__graph.map b/docs/manual/classbayesnet_1_1_boost__coll__graph.map deleted file mode 100644 index 4321386..0000000 --- a/docs/manual/classbayesnet_1_1_boost__coll__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost__coll__graph.md5 b/docs/manual/classbayesnet_1_1_boost__coll__graph.md5 deleted file mode 100644 index 94b6c47..0000000 --- a/docs/manual/classbayesnet_1_1_boost__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -33c55f91c7a5aad7b7e8fe161de0b44b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost__coll__graph.png b/docs/manual/classbayesnet_1_1_boost__coll__graph.png deleted file mode 100644 index 1be9b7e3e6793825e312faf54100847e021d224a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13587 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 bb1ZDVp1O9|gC%&&36Ygnk}8xidi6g5;R1KJ diff --git a/docs/manual/classbayesnet_1_1_boost__inherit__graph.map b/docs/manual/classbayesnet_1_1_boost__inherit__graph.map deleted file mode 100644 index 6e4f09e..0000000 --- a/docs/manual/classbayesnet_1_1_boost__inherit__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_boost__inherit__graph.md5 deleted file mode 100644 index 0f9adf1..0000000 --- a/docs/manual/classbayesnet_1_1_boost__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e24f4aa87c4b3d0cdd0c5eb01ce7479b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost__inherit__graph.png b/docs/manual/classbayesnet_1_1_boost__inherit__graph.png deleted file mode 100644 index afd6d52b581116fc011aa84473cf2a95ab77d6f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15507 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 diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e-members.html b/docs/manual/classbayesnet_1_1_boost_a2_d_e-members.html deleted file mode 100644 index dd7e95e..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e-members.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::BoostA2DE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::BoostA2DE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    bisection (defined in bayesnet::Boost)bayesnet::Boostprotected
    block_update (defined in bayesnet::Boost)bayesnet::Boostprotected
    Boost(bool predict_voting=false) (defined in bayesnet::Boost)bayesnet::Boostexplicit
    BoostA2DE(bool predict_voting=false) (defined in bayesnet::BoostA2DE)bayesnet::BoostA2DEexplicit
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::Boost)bayesnet::Boostprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    convergence (defined in bayesnet::Boost)bayesnet::Boostprotected
    convergence_best (defined in bayesnet::Boost)bayesnet::Boostprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    featureSelection(torch::Tensor &weights_) (defined in bayesnet::Boost)bayesnet::Boostprotected
    featureSelector (defined in bayesnet::Boost)bayesnet::Boostprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title="BoostA2DE") const override (defined in bayesnet::BoostA2DE)bayesnet::BoostA2DEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    maxTolerance (defined in bayesnet::Boost)bayesnet::Boostprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    order_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    select_features_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    selectFeatures (defined in bayesnet::Boost)bayesnet::Boostprotected
    setHyperparameters(const nlohmann::json &hyperparameters_) override (defined in bayesnet::Boost)bayesnet::Boostvirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    threshold (defined in bayesnet::Boost)bayesnet::Boostprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::BoostA2DE)bayesnet::BoostA2DEprotectedvirtual
    update_weights(torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    update_weights_block(int k, torch::Tensor &ytrain, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    X_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    X_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Boost()=default (defined in bayesnet::Boost)bayesnet::Boostvirtual
    ~BoostA2DE()=default (defined in bayesnet::BoostA2DE)bayesnet::BoostA2DEvirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e.html b/docs/manual/classbayesnet_1_1_boost_a2_d_e.html deleted file mode 100644 index 3a95eaa..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - -BayesNet: bayesnet::BoostA2DE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::BoostA2DE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::BoostA2DE:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::BoostA2DE:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     BoostA2DE (bool predict_voting=false)
     
    std::vector< std::string > graph (const std::string &title="BoostA2DE") const override
     
    - Public Member Functions inherited from bayesnet::Boost
     Boost (bool predict_voting=false)
     
    void setHyperparameters (const nlohmann::json &hyperparameters_) override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Boost
    std::vector< int > featureSelection (torch::Tensor &weights_)
     
    void buildModel (const torch::Tensor &weights) override
     
    std::tuple< torch::Tensor &, double, bool > update_weights (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)
     
    std::tuple< torch::Tensor &, double, bool > update_weights_block (int k, torch::Tensor &ytrain, torch::Tensor &weights)
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Boost
    torch::Tensor X_train
     
    torch::Tensor y_train
     
    torch::Tensor X_test
     
    torch::Tensor y_test
     
    bool bisection = true
     
    int maxTolerance = 3
     
    std::string order_algorithm
     
    bool convergence = true
     
    bool convergence_best = false
     
    bool selectFeatures = false
     
    std::string select_features_algorithm = Orders.DESC
     
    FeatureSelect * featureSelector = nullptr
     
    double threshold = -1
     
    bool block_update = false
     
    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 14 of file BoostA2DE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ BoostA2DE()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::BoostA2DE::BoostA2DE (bool predict_voting = false)
    -
    -explicit
    -
    - -

    Definition at line 19 of file BoostA2DE.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::BoostA2DE::graph (const std::string & title = "BoostA2DE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 163 of file BoostA2DE.cc.

    - -
    -
    - -

    ◆ trainModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::BoostA2DE::trainModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 44 of file BoostA2DE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostA2DE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostA2DE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.map deleted file mode 100644 index 5cbcf45..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.md5 deleted file mode 100644 index 83241f0..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -98594f5a9055dcb8b341181bb66be4d2 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_boost_a2_d_e__coll__graph.png deleted file mode 100644 index 67b6796b9c871f67d574609a15d5d7be5c59d8a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16762 zcmd74cT|-7wk7(JK@cdEoP!7m5+o==5K0gvOOmW8IcEuif>KHn5Ji$8l5>(AC5Qr& za|VebARtkAtIoOIectJNyWc-=bniVjdstT0_ls-IHRoKs&{S7Cdxqf*f*@y=Z=tmj z1V;`2GbAR2SK>J-mf(Mc_irnqkyGryDRr4K2*QRaqi^VVC$3NW8lT@ik=-1&y7z?o z#%0{8XFWx?L|S5&wKR)gb%oEIv(J@V(i;e$s!ooGm?Nw@*5|>k|(;f8q+Y(OHBE z|MN%OE@ee`k8QaL#yXIyRcMG(9;3j{&Q2fR>nSfU?`=``EiXnTy;}Ogmse&v-KBNA z%4ktJ;;o1Mv8{2^=pC}a{P14!jiWq1jxlm`zrjah@}+&R*cBLRSlS+pHv|Nv70yrj zZamA(v`Q-s5p&Aac(3T_=oo&$M__v|OgOhSwS&$=#MxS;Esl&SK1`S!FNE77tfTQC zFCYKtsdb*kUF=Hmx@cR>5Y2UODDUnd%SP?Cddvhl9x_~D@|n@8_DK|{635l6bb|H! z9DRL#o!<)08Y1qNTBeqjm1zyVfBQBB`-j?ECd7HA?*dv$$zuGI!&Se1p*MnNQ#@-9 zj)wE~6o}hmXH(|;$A%Us@Vu=bZ@cEjhx79C6n&jeT&*o1KD;;I7VhW`3xKlS8}mgXw@%na9Ul?TU9ZjSmhE_V?!_8PnILe0)rGbb{B0 z3x}(Jj+NW7af~|9(9p!oCh96j2g6(>&8$S;X&M-e%!qGqZ>J8gJshM#p`Nsc($3fI zO@034FfL@-Ntb6-QP8%%y6WripOxPoa6HfIJ@bU9DB$$*@!ySr_HTj>WchlbkN+Od z#_F3E8*Ho(XpNV2CrQoEGzIloiz0zxVPvXFlGJW@TmBI=KHFL7DmQQX^~^E)eWZ zda+7+tm1oldBKJ!c-7tvrD$&A^%(DMAXC zun!+NLLL6B^b?Jaj?&5ah+aQEc0(FV9)1&YU)FT zX{A5YWu_5_-?);JPj|P%u|GpC?uwOqzQ?2^vxh*9_ZEk-v2jZO3MCU$*!I$QPCmXf zto}Qw`u#al>688W-9JCR#$IxEc5Xb}UF)rKTjFLMtL!&it3U0Q+F-kQv3*WcRblwr z{TAZd-610+kWs?1v7>{8l!jlZqQBfu|M+@2}YipMqen?B3-Pnli?CgAAoBx}Oi!0c!+|V|wr3H;E7Znxt`t4h#7cX8ctgox} z_V%LD0~JnYVAAYOan_k?pwU}fTMIvbs-~x>>lhoW zGD~@Wl$iF5QBhIh5fBLX^Yi23=6>G&URI-^pg_mK;FeEa@*DoU@_2+~Y#bk83CshP#3yh@uvYd;H%i`nK*4ADkRzJyWZbyICKWb-pj^|ybr>DmcJaguZV@O6{GBSx_;oebi38Q!uOX`j>r~w;?&N=N?GAnX z_v=Ueb$`a}c2;u>`?kN!Y9uEoi@GhUa&UzDR}2u{_GoKs!_NAPxsX9#p{@0lBlFqO z?%ih@>Ge88-mt!e4%;eS!lFj~^%^@?)>Nox&z|+hXk1rD4=UX0mJB#rmnf;I$n5LW zei;#wam{VheGzM9XAlmh;?b3|bnrLZhc|*wAf>d|!^YgQ}R8?Er zSp&j4J5~Q$(X$( z+W z7;fCSF=)EBz8;>dUl^a6`%6Q@aiVdm&X+y7GL1HA^*EOEnyag;xe#57UM>y-QB$eH zaq?Ak^wZ^KYpx3y*kNMG%-WjW<4IT!6bnm4u|>OlT5nvy-H!hLbC9!dX=q3|EhHu~ zy?*_AW_2)^PSl!`TQx3lV#2tkrDf(Bt!X0$#o4*8$GnkChPv%A#TzSSZ)?j}Qd+w9 z^B)(rAHGOkU45j~iUMM-vBTuIw}MJ{@7@hh>g)40&yHwrZuY5gQ~0E0;pCQH{>Q)J z_S?(*!wo0T;N;JxhOj(MNEmm>zXB760JOheF}*nxL@`&~&hok5|HyfB=0@J#QbMGs z-rtu=+Pi3MjjzJX;pfkv*uU}HYNho)`0-ZQenhCuY5GKP?;yg2IERVyy2~8C=g*NR zBkv5&{U3#H6GOj~`!`mX@YuU@%$E2;vkq`>jHUJiDiGqo@ZI}` zU8}W8y^0^6ZK5?^8|ta4sn|%(7yA-c0Sy72j1Z52h$to`gy@m4Z-2{+b2f)ND+9$A zO4}(vYaeYBBS|v8pA2h?i;EYQmv5QWcwQ(sRJ)U*n)>^vx&GxbbXBlWQ4w zcY9%<8LqiFewJduQh(gv$goGY{2m z&o%2Wo&`>-{n}=Zbq0f)T@I?H+aPYvG=?~pTxCQzNg345Xx7t|& z#0a}doz>M(KtCXVCzV}LKRgVfmI@X7=1t#=a~GGJpOKy&Bdoa7ZZ_KOddQ*VcBU)G zd)lemgXaAC9st5Tf`S|BuMIM}Nz|@E3Rvz*RTwC>(ip4r^-3#@EGO#{6a6vcKP@S` zI=DR^1?Lxgx6bGV`S`>#qH7g5qiGWMdDHs(_k zW*%=VtCH3oDF&`v{0Pb3O8X(Xc6IWbrwXO?@h4}?g|l7g0~zrPh?{GMLyH`ZDyM8Sd4Qj7&$g_iqcVLR_i2dFFG}(*%T-oGTO-p5GGv`^ ziKLMjCkWqVU!DWQf|Nq<%je|K5TsnsUcpN2OtLE98q2Wqnm0z0u#wO7fX$%B;23s(9j0 zXm3U0V-}Q>QHGxqb9{;7kSH;i-k#K&snmuB_^ianNt2@6WweOLq*ATEAfJ+5qma&fFnT)$Cl^*r_IAZjGl~F zMH8xaQ#oiGFVaMad-f5 zh$2_JWG-@#KC7GJg)$;lGd4TwF#9x;->@?4^|8(L_bM#>t#q^vtNO)z~qx`DC6TiDXh6>KG#fn&zPR?YiOttO>huW z|DHkPhRSfqui9{&i%j3_Ri|+`^|L>w!okwOX$)IvJeBX+M)SSE7kF1K`%!gP+ejJ~ ztwd7Cn6h!8z%x$MgUrpSvWJ%1f+_I5PVoL0nVnZpAC^dUGQ~apr3+sarF3+v=W(#} z`f;(Q@;On$-At9ik@!uCr-rY#j5@kU>5Xv6P*jR}B-A0X1uy=3uJ$ZC_rKv|Lh?uE4C_8`m?Yv7&#D2aWwW34FZBVYXSvICu&9 zN!3^pwY8JgCsthT-*@zJ?U3D&D1FWRjf?ds=kexe*;&NjNt@L<{6060O6Nb?f0d9w zwwbo&QxmH)+{{1UV^8qu8EOCS{o}K^QkYG(7E^{CceS4y?{}`RsQmb|g^Z1l#82I+ zX0fCXvAk3)U>x_dz~T(Pr=0m-*;OCam3V`j<~f7UH%K;sWz=(>3H)q#X6*&=}#3E0S=9U zIO%FyZ^dT&xAm-zDuql0n?)%<-3neuZHcO^#2Yfkr0^nRBV%!d5?iQ6HjZx%YAM>; zV`tb+FAEA*IOTlEBZ0YTLLrJkPSjr`;(NG4jDbm%bFxiMO{e&Q!NI{7b@&E-bdK}g z^pW?A3k$VWEG&*Hw{FqpYiD04m?3AQm%AKzMd3NwJ1?jy>Z7?F@SSM`UD;c5lvo}u zbio&>i;IiXqZb&csI*6Rj8Y!WpPCp-v0HaJALBI|vKI-6L?~V|p~6E(@Rrrkd&KOf zl=7WKJx2L@zIb%XXhECuu|H5juH|WGe?s+^u`4`xFDftJ#S!}2-@o0e5JGMP1GMBY zyeC8_9ZY$OBXkBSGjuRgj;<%z)P?GBe0*$dN&_83&UBSB-5@d_KZF}EIHmma76<+i zWsw+1afsM9QA*@6OE3gd^&>kU|;GHb!7hHUJNP`1o;QtZO)2D;%<-;Q=K_zKl9BQk~FSrZVf!%s=0oO3~B zr%QegCkWP)${De@@cQ~5UHS9pj};=Vf%f=2c*ip)zmK5E5>0HVwDTR~O-XE&xt?w{ z6n=~4GSOWAL@9eGe~*-K8dDWQCJ<@%;1Q1CeZs~%!+cLB6iL3G z6u#Vag5Y14z%_W=MN|}&Vm~cK8TKf9gWGb-(`R}fh>_f|Q=EB7wI7FHkHMr_#a`}+ z&sz)lcxjZO90}uE?xpW|qR(h&0xYP~3+wBF%tw10vW3HIf>c_GT*{2Bj~1dh(PhAa z{(uVYHE*!NZFB+-+tsW4A1FEGiMLj;ufh|*pX=qNpopYk%pH33)alxN4^Ar7*1jwv z7}YpEbe6VQBN`6O_Av`-$=FdoZ&Nnz& zGdIx80A~XzC@3U!O=wtIH>|C!yeI6de?@vC-a2E&@wxrHz?frncDxx-i`_AivXToiH@@S?yW|UGNM9~{7hIAI4 zeCS{4&rmL0H{1HBV++!G^UkXNKFV|Y%@5D`I%^a$Vpd}L(SUeHjKhzq`0YumyG%H5 z#&oYKw{kiG<;e!i(!PF|5ihygpSStU>{CRW4ETCC+j>J)hWqJ;2)PePsE!b0eqBbz zPU-1V;A{e<|Qa4lKyj9 zn_)d?7bQYW^{Z*x=t|F^d~FobOv)(Vm9yz~*{l6T+P_Xe?kVfTq7FSNOfKav_56rI z;R?!`Ydv7PdC7zV@jH}LNl|$&l{qj4)6pTfLvkBwxI5_5bsN~2<_zfkDYbOWRPV<~xWjVI$DBW9zs+L!>j}*Sf zR})$$T@`(IKVv2*Etu)q;O{-? zrmE`i#W%bTLm9VuafsK$r;=roZ~HFP9Qj|5MAzbfQU890T=nVyY)SEY!rogIubjFL30xcO{a#C9>js3%qAJk^zSpE@s++v4u zai;5jbWk%oz1}U!_?$Y5`|zLQgv#5kxBnqd>>q&6(uPMN9f(In&c@GAX3-Ybw9#-% z9uN?aDE){E0Xn+qe(M>xtVx?6KYrX&SAWi>j0Ar9atoNC*WWi6cq_^vb2;;#+$X@udWHA zqTat}br>yaopW0qOGcxy9J8UJ?bdEAgg@on!A~QFAtKzN6Fu%;UYQsSv8%H)8#}(t z-<^Ie6^%v%f4s1?r1b08uZ7v!8>Lp?xj8<#%(rPhc<`}`IjBjFS<*cP$bfSwEl^!x zxndO4*lB5Ledfa@I&WGsY&|f4rzc0s#5dsZls*3I19d&{HZq6HX^V$B>ZkB!_<=yc+uBF&?6{8s>xCL5 z>#F|rEdBaj!#DBqD(hqAX~0qYEJP`NX={6)n3%ZynL_qsIHN?LMWl?SV_HGIm8E4g z(4zT96%i8?6V@A3b!UC1uZhy<$~#))roe`M{q`*lhxYGf2V>P9m#V6&qD%`fa(n>s#MRR?12|W{%a=1En5Fs>oa&V?T)6Q1%^O8vr_Y}| zr?B+>{Y8C!eLjAEE+G4Fzu`~C!6T&9x(UzQ+;r|+aR>en4IKPVE3KJIsH;4~NjhLmjh#OQ%8q6A4d=ifXObAG!)O5FCwpPPI12 z_Vr*(TicvRQ^yC}*#V~~4@BNAcfPyAr5t^rFa%uB%kc1Y7&weyoJdzk=e$~yWGn_F z?l6Xi&DPP>l#@(~aF=8jFenOqPQj|a)SbjBB_(C}$)4V%%JmtS@`sX=5?gjxkO18T zAV-VVogBgraz%UjurM;-b{H#T4{9>sdZeq+-}k9#AoKZ7MSV}%z}{B|3ZUjv>h>2#nv!1OEWS;|#qq83e2j@#y*E5y$<^q$N8DL&hQrP&->X`tJA_$f$;ifK=$mU(hfJ+TpvqtLx({EzAB zO@o8fFjpiHxIGRru|cK>5G1h@S>iP}Ay9+dM$R&dlMxUQV8X)*Q0y`?%)n2MfMgXN z6N93md47EC=k4vyCMr7M_bvRwn=yQ(+|XowkDY?`dRSM2#IWT0@-im<_S-p-Bbwl` zSXO*^tr)Iwo=FW&sbyDA@#EXrfaF-w;Ck3icNDr1VdJ?ml_amAfDM2;eAH_3qAzxQ zWa!BV&ybUI11!VdKp^P)c2@ecVI5ybMcqK7w->uO5qBUlZP!69iB3!7^jIH@9k3O{ z3Q2HvJFG?f8lTX`Wq$c@UI4s~?(PU&JUlGDs8?ue;t*Eo+8K$lo@;p_>h;Sw)PV}s zl`NA0vJ#xw7Z?l;zk%G|gj-})l2PUb+Y9N%bd$ELA_Rk2bS-$x<4)StHvE_@xVtN#OrZ^!~@tIGO%S3^5wMof4ujITG?% zs0Av-+-2sFCdE-`#UF@n+}|=%PIJDS7Yk@W@8O}ufFf=(VM;;bMdCl}W3wa#-|puV zhj5qjMGGk66%|TqAXF&sOFC3`53yrlHy1%x-aPt*$Y)x2+7?dw zE^u+}ld?a)QysC$^FFbMCcWsKBFMQBQ{*HhceC740#Vq?_xaZD?z6hOy1s`(mz+gmyl zJ5FS|(+9k3XpjX8BIy0;!P5JA$Q?YqyxCi99~AS-?(x?NN+ywC(#w;3^ytw!{Z>aJ zR+~@eH*el#<0!KmE@&%(A5C3dXXU>fX&cStoa_Fi^^-6~P7umxfBYZ-ED=V3g%C!CP_nW{Lf&io{+$8~^!$k_tUo-1U`0t##3_;_J)VLs15j_5l5;4Hz|+V`isR$so+>vhE^cnztg9D1 zJU!cTbaQ8BXK}#jLB=9Y2NR_k|Jk2O0pU#8XUE#_CWt#rl#Vb1{Y0X&%)K3{vdn(GY`+U)A;OHa6=?@y1df~MZ)@H^PG8OTskQ5}~X z3aq$G+G76icTOyo6&4C&1$U{9+B@sT9&1BBcEtlBhlk{W$-cj?eeLQ>hZIVQFo@Zn ze`saZ50#7t!XqIuJa-fgnG4BENlBSn@1txu{(bwMUam>ji2Ap3f| zg-^SvU2dy3D}%Px54x;;ht~FNtS0+Vo;XgGJ4+`=a{6r!gGEh|RH#BJ!PkzCCr##o zhWUgDlk8)r$!ZS;u#CV}hW_ApdKecH9Ju_dF;F54>wZ$}!yUKAVGg0&FpI_V)Z3;+2&Z;E~Q@B_P(WsLGC!9e5c?*0+rd$eJG2Jf8=%}0-}0U%|#>dXcPFfDU)wgWhH zV0Oq2=hTa!phBr7UX5DpPO>XjUSw+Ds04nN&i*o@=08(es9sSEC<*GWkx z7AGJUcd=@6d;tGQG#7w8y#ixppd-sa=|37gfPENTyd8}WINl-x>s9B3y29WfH%jZq z4IDtDch@Hi4iC+<)vH#0%zh0VUKPEY`$u2?KZ9W5aL`<~;<)jUkC~Ykuw~vW>2HN> z2YAxI-OC%D%UvRqYh4!vNn7P@lR;^_(!Xc7&A5!%FWPjNIlP###O}N{j8A}% z`=LIqhB_Nl&WFWYs*#zd$S(q2Q^FiY!BKO0fo=MlH0)S}bSDz-4!`YM$Lya^61xuQ zQHD#JNX}&VKD)Di3yV(*$)*3mVRzLK;9;_WvbW=`{M_GoF@}>#8B1p3VG;wioh5#Dp`<`oI1{UP`iWBT0xzi7@u854N!I}H7oyPxM0l#lrm%QNgf}P2Hr7vCOZQlbf<>pI; zwb~BJ|KSe>$%g07`BDa`T)+O$yxV_i3dVo`_|T>_J4Q^y?_)>j%acyjE-u1g&S4m^1b-2vl)Nzx z4vrk=yHL8)tPSOVCKaqTPgX*MLn|aR^P(t&TKTY%p`QM!W2X90?Pe5rP_H%m!2_<^ z+S(bwHo_Kda+&=&$lUyVZ?3-J{=q@hw{PG445c0)d!ujO)U`{4`gI>%e+a_M%UcQ7 z(w^))7b|OOI3*<+(D;Y}xNCp_nORy2!8+oEg;8>?nomkguju6)5y7(W2~jzI1(a0m-WA(}7|K%83l?{k3j=#IO)C{mO)2K>TiPV)N6{DzWT0DV zy*=Q*Qb7O1TsuFn09d`KvQrzTTgr}Qc0}^^YBWb>LUrdj)d&#-FuqPqP6`82CcWKx z1rr(?#HGBy5pWs`WZc5y;#|P#5$n(Ob(h6X`Y;BuGhk_qZ4fH+Kk^KN!vPm+q}+}c zhziT^$!9sRaGF~^5d&!>5TmKB{S-W&WH6sN2`3iEzp)>H5^3)3MLl`)gigpD0Rq^f zxND4z^*R%nH8m-L8X{+8WJCf1GJrcW1c=$s)}q)i zh?9OKg0P8+QA62K=ews^Xj<0;XVre95+zT(v)qfvC~n_4ly3xvX)Anud~=8%gR5IR zJEEsXX}xlV!$$Voo=^+SPI^tZ`fk*LX-}LD4l1x0!r;Mj0TK|OfI!!`9=xFirggS1 zcNGrX^BB#D@58nGUjwhe!otD>5AgacdV61Oi(m%lzeRo4+{y}xgoFen(gX#8ix-K2 zQmypaVqp^ zNpI+~V$IXwmFt7zqqFcXRDh#nW6^-xAVl;-t%`Lt8(U@vln;(l`mtk*6}cotbH9H1 zk^*K@hHXL9+FL+9F0TA1=#1d_zeZa>Y>SHx#iS|R`4e5y=K)9zgg4#zKb(^UGwh5{od3a_0ga@>ca9sE z61|`B-_aU}G!Y^{GnMVTY?{7yFP{kBBpKz)iv&)0DF(_{Dyd!H+4wj-|m=d!z9Jg|pTNj=6D}ZtK!%4ZF7e z!Uq^fZNKXsjX!4K6M?9531w&7-p@aWrPI)HJj66k<`*0F5RDT+xCuFzhYmM4fLUY< z{6V$(-e~bJ8;XYX$$P#f6pn; z^J~ttcF1N>Zf;+!s4rwF$t3j^5kq|NQbMzW_~tIOK#&bJLpA7TJ;nb238+QI0)^2E z(MZVirvVUmBIsa;@lU!5OF-;{@-PP)rryU4Xmh|ueXzza12qu-1NusC-M$?Jf?BoL z204)AAb*$zoUJo;dYlYxGk*U5b`y@DpemPiqW1aSaj|J{M_dMEWo<|$&@fii_we{3 zDedJJsQegrj5(UY-vmmkxsww`xnVf8J^Ag=hJd6M$l>v8yn+I>=zXyC+VM+yZ?a+g zJbq5qF#>PVJnqyG4uJq^gz>+MjU|Z9nd9{SHF52D`t&a=;22yEkqQ?G1;*9xB-lv7 zqDl{V6BoLto?w6xwB^6V%XruAa3`yZMEn^RO# z(GFcy&~#@epV@yST^kDqvAm$FD%n_>P0&)ZFS*>!FVO$P3PJ;Vy51jaT;5$9=7hXz zTh0LHup0&jbitJSAh~V<_XC|9j35`uflBDJv-|`M_xz@{bQ&_d=Rti42N4mdq&cAX zE>`BJ=Y2 zv6>V#JV1NFXE?3lz?4O0vknzb7_)jb2z5muT*T$~2mumcPhG!D`)@A~Zgnq-8- zV^D5OjcsfLu1z7ce-`xRV5m2+EiPc>!@{Fy&?5l7gi2U!0W=n#rc0SGP~H4@OYosJ z1N(9H#H&wWrv^qX0c->L5eh^}+~;)ADF-9aPDzA;K!+Z~g1zD*flpMruTWWb#S#&VOa;*e!zV6;N9C~%48~gr!B)Ahe z;G`ox&?lQH<4Xg4tr&1f6W6e(6-4bt&HUTYtkF527z@va?z>zW$Fo{P?)$g;UshFC z>PQK!_ob795%UZ?K33g@0V@zcxolD$CyRk=@%L~SOB(*FT4G_6@+5;EB_t3mCD86? z(fi@%;7~tQb>2Qc_rJd8UF0l+T9N~tA{5e_fd`Lt+i?bM#ljTRu;eB5b>@cKfHiX_ zzhbHxs5zJQF|qyqeI4I=s3+in^Ix{Rb()h?OS}iC056N!m7^KZ>BQ@mbYRu(aA239r?1YgT%P$z&X9I5k_F!fy* zb6@ErKsFE83KPs|&z}zlYe_<+(BI=@1c6o}DD+zZ-dmkGgNGvxT72PFK*N>{c17WU zU|Ui_B5w8Ho3wJQuw~O>IcsRUt?uILimU0us0Zdv7w99i{dPq}WM*;E(&b(H$)ry) zan@Ba3b<@R6xXej_u$50=}0h0dby*;rJ{`H z%q2Y_?0!P*mun3<1zL7_x zR@;Zjc)z~6*7b)9wkZoblCUKUgoBxdgpSgxh0Dzrg zGqK7EU}6bbLUJYy7W6-OFazS$moHx$VG>Y}ckb%R=h$|14 z6KJQx5)jy6@4cFxX)ALk_bZe#J%whnd1ehPusM+UuRi+Cg}ob)%kbpFZ4iSxALyS3 ztndsvNU#95;F-6uU|=6X>5cn_n(As&L%g z*=d1bIt%-Obv1mZ0;%E#1V+Rhj?-eou8fQfmQ|77YB{&aICBX+KBUlum{aUv=DS|b zkoh}rYwLZDwc>{lA3jx8S4YGgakjv{FDfq1-eRx!T>qj(aSMKJ04?_S0x*CF^dPwd zcp;GP$mNNlKNT)=-cTqr1okgqzdi-d#W?qvPZ9-!KO^*s!BC<+u);j9(Da7a;M|3YxY6vwd*oly)o1l5}QnPJ7MI%WIF}dkt(f z%ndwpfm`!-r*6Wr`i)K(f`#7y{sxUn2*Z!uK)`j`+dO#%4|jJX8%n+)EdBN#VDc$` z_>Be}*>O&F_rk=OKzS5_AvFOv{`ztdH2eQ26td-&I|c?A@F}H#GY=bl0v$bC**dJs p(PjB3RwDoMdkWw;77T8j;_>LSG7~llsUYx=@=bMgfxP+C{|B?YFU0@= diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.map deleted file mode 100644 index 2f39440..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.md5 deleted file mode 100644 index ce8b996..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -aa422c1101da842a8232eacd485de14f \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_boost_a2_d_e__inherit__graph.png deleted file mode 100644 index 7e032fdc631febff074fd40faee8e874888710ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12635 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 E1J~F{fB*mh diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e-members.html b/docs/manual/classbayesnet_1_1_boost_a_o_d_e-members.html deleted file mode 100644 index 2bebe69..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e-members.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::BoostAODE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::BoostAODE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    bisection (defined in bayesnet::Boost)bayesnet::Boostprotected
    block_update (defined in bayesnet::Boost)bayesnet::Boostprotected
    Boost(bool predict_voting=false) (defined in bayesnet::Boost)bayesnet::Boostexplicit
    BoostAODE(bool predict_voting=false) (defined in bayesnet::BoostAODE)bayesnet::BoostAODEexplicit
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::Boost)bayesnet::Boostprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    convergence (defined in bayesnet::Boost)bayesnet::Boostprotected
    convergence_best (defined in bayesnet::Boost)bayesnet::Boostprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    featureSelection(torch::Tensor &weights_) (defined in bayesnet::Boost)bayesnet::Boostprotected
    featureSelector (defined in bayesnet::Boost)bayesnet::Boostprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title="BoostAODE") const override (defined in bayesnet::BoostAODE)bayesnet::BoostAODEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    maxTolerance (defined in bayesnet::Boost)bayesnet::Boostprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    order_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    select_features_algorithm (defined in bayesnet::Boost)bayesnet::Boostprotected
    selectFeatures (defined in bayesnet::Boost)bayesnet::Boostprotected
    setHyperparameters(const nlohmann::json &hyperparameters_) override (defined in bayesnet::Boost)bayesnet::Boostvirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    threshold (defined in bayesnet::Boost)bayesnet::Boostprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::BoostAODE)bayesnet::BoostAODEprotectedvirtual
    update_weights(torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    update_weights_block(int k, torch::Tensor &ytrain, torch::Tensor &weights) (defined in bayesnet::Boost)bayesnet::Boostprotected
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    X_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    X_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_test (defined in bayesnet::Boost)bayesnet::Boostprotected
    y_train (defined in bayesnet::Boost)bayesnet::Boostprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Boost()=default (defined in bayesnet::Boost)bayesnet::Boostvirtual
    ~BoostAODE()=default (defined in bayesnet::BoostAODE)bayesnet::BoostAODEvirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e.html b/docs/manual/classbayesnet_1_1_boost_a_o_d_e.html deleted file mode 100644 index ba60471..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - -BayesNet: bayesnet::BoostAODE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::BoostAODE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::BoostAODE:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::BoostAODE:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     BoostAODE (bool predict_voting=false)
     
    std::vector< std::string > graph (const std::string &title="BoostAODE") const override
     
    - Public Member Functions inherited from bayesnet::Boost
     Boost (bool predict_voting=false)
     
    void setHyperparameters (const nlohmann::json &hyperparameters_) override
     
    - Public Member Functions inherited from bayesnet::Ensemble
     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Boost
    std::vector< int > featureSelection (torch::Tensor &weights_)
     
    void buildModel (const torch::Tensor &weights) override
     
    std::tuple< torch::Tensor &, double, bool > update_weights (torch::Tensor &ytrain, torch::Tensor &ypred, torch::Tensor &weights)
     
    std::tuple< torch::Tensor &, double, bool > update_weights_block (int k, torch::Tensor &ytrain, torch::Tensor &weights)
     
    - Protected Member Functions inherited from bayesnet::Ensemble
    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Boost
    torch::Tensor X_train
     
    torch::Tensor y_train
     
    torch::Tensor X_test
     
    torch::Tensor y_test
     
    bool bisection = true
     
    int maxTolerance = 3
     
    std::string order_algorithm
     
    bool convergence = true
     
    bool convergence_best = false
     
    bool selectFeatures = false
     
    std::string select_features_algorithm = Orders.DESC
     
    FeatureSelect * featureSelector = nullptr
     
    double threshold = -1
     
    bool block_update = false
     
    - Protected Attributes inherited from bayesnet::Ensemble
    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 15 of file BoostAODE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ BoostAODE()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::BoostAODE::BoostAODE (bool predict_voting = false)
    -
    -explicit
    -
    - -

    Definition at line 16 of file BoostAODE.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::BoostAODE::graph (const std::string & title = "BoostAODE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 157 of file BoostAODE.cc.

    - -
    -
    - -

    ◆ trainModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::BoostAODE::trainModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 33 of file BoostAODE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostAODE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/BoostAODE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.map deleted file mode 100644 index 9a88f80..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.md5 deleted file mode 100644 index f160e80..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3c89fcabfaf26457db505ef70b62833d \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__coll__graph.png deleted file mode 100644 index 32135bee3de45ed41c1104b261ec0f295a52ef4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16880 zcmdVCbyQaUw>`Q+q!f4_P#Tn0KuSuwkw!{F1O<@}2?0rIDFLOF7LaaGB&7_xI~8d` zLYljt_k7Q}cbt39`Q1Cl{o{AXJ9yQH&EES{Yt1$1T!d+=D-sb>6Cwygq;y+O3qi2d z;L8vn7d}a5BKZY>;67AQlta!i|E1UG#v#a6L`hCs$Nla4)U$h+c26ZYM;<@$zbuV~ zwMCdA9b^9D!F?G%hgXL8Z}*F^o2Fd=HYAc*reOb!VQbkEP}WFU;pd$ z45fK&Sv5{C$1fN5kkW>bp|!cUx3_cAQk0jMx9-;XqhY0NEn{llhppTKzs9EbnHi}W z1NX~+etW1&&**uvDSpxN&0lXlGPK<}o~p$)m^UACsK;#ahR?%j24>ls*tx2!SZ|l9J_9B+=f!fo>oRiX0!8V&sA~p zsk-Bpp@Kvq2l{W{zrT5Oa&T~f`3E}(2NpuXeP2#h^b?DWRQ&CRW%UdZ(_nbShM(Vg&2Y;5fGA?r6g z_mpBwpZrw5bm>yMSw~c_CBLxKJdTX4?CMmKeKrhpA@$it^XbVE?}N`cs>%EWjVF6F z@UxEdtptdldTz_N*Bo6LZUwq}dWs!AlD}FRE4))>K(V zA4woyo6UIci%E|+S4$d)lh026&Mb6X@wJV2{idt09~v!j_}*Z=Av^aM3k%B!&t2>K z?}UVeQgY=JoLpRjzQQ)K%mia&V?+(z=6o3+K79CUM@~*IQ!?^B{{|l)sYCrP`LxF` zI@_t*%WnRBJbb7my(wc zY8yBDv{(Im#^YCt`$}G}DL*xh_ePQ7V*y4PPfyQ)$6A*!U+!{iLMAhN`KcpAU%Ysp zo6C0Z-aQ_xe&!_?5kyKx2K)HrWbW55JPi$vZM%jz(Zy}f;CSQzhbca?Zf|LACvSy-^%ix@v~b8FAnEtuWdAQlo5 zx_Cu`7Uqw9Vr`~T^2w7YJWlg+UVCGY5x<|`6U=^miCH|fe_I^gY}#a3Gi8x#|NeLU zp=n+>EVbF$>4|=wJFiauxWiPA+8fwQ&plUb$3&HwObp5k%BD+cJb=Mi+?Jl91H*aj5uI1#d z(u%rqPP;Dh#CrvDmRj~P-9y~^xp3Zn<<^u;0FAJXLetPih0bkO} zn#R|!U#qOc!osAbq>%FR^5j3&-{KMzDT{}!^YUV2WAPDrdHFj&J`ynSn3@`)w$@e@ zy3Y^moaOdn7qb%SqeqWo;^N4%-@WUNzhU%cXz2Bhr#KqT!p!`#qT=T3gamCXtLq*f z9(}Mc)#2h-sj2D`5)zkaXjFdnq_I&@P_T1xvDV+$P)Xp*W{?ero5K_kAVDD^aq78Q zKYp11+1Yv5BY8IY@Qs|D@h7+J{e5@m#`%SX<@&$V1y9FKc~D5Qgty2I!^+V6p35xB z!cL4Ho}T?-WNe)!R{vT8yNT);?(b2ho{`_HGcQ7o9Pu^A(s5HFs^T!YVy!gEjzsb;J znVd93^qzt_GaBje##$CW$?D3@qy zRpsQ^G*aJnr-;Tio2GYms`gv*?{o>xpwM^p^vDnP_j}>oudZq2<>d`#$l@_FdLH~t zSl*j($nEUxWUVh5Qcn?)H!O0qsR*(#G)(rGR^hIf3&15}jQcA0xce=GQtUN0wh(wx z*X918`T6kqTqX^wvCMbm<S+>c@X&M$6R()JZ{IHc z`T1RK!=x%$W;_0E>QgxKu>BU7o0_D4{QN1Mt@Yqncgp78o`Rzzk6xiZ77Yyz;ujEb zE=M)#IqaHdOa6x)QFMvCX1K`J8#jnVQi$OY1~fKGLWqHYuYk|co2zlfcC-}BsM=Qg z@5U6Gk}`Da)6db>#2njgpOeF{))iG&B}YD0 zuo(D~Cp&Q-mKn)!U2$=6ng#~Q8cz>7_SPpt6zM&1PLBR6YH5+~ZA^uimhvFFPp#nS zk9Zcr87{u}@nLH5M@cwMM9=ot{897q_g$(&F9M@k7V_afI4{W5Hb_pWZrD!=`+MP7u5(@b@%jnQ}2cfB5-{(C|%?m266c1W?< zof6(0fY&lKw3{M&$#Fg;x^fPXHuTAN-sZSJm#I#Mx0yYR@T3SONTy^=8Vq;ziNa5Z!gLo>gA|fIWA-3%AFGQDlAGuLp#D!f}Xwpb;Gg91E=dr!A zb7ZmlVQiiA@td0SkSI!)lOCr^N7IXM?v9wu?1;2{{=E5>E$!;HYxn?QC~rMs9xgNp zXz)HtCQ+dGTw-`D=0Q5+wN2!g&#^h<{g)0hmY#!gb#?X9`_5M_tw%(w{>qN#xLVCDI!P<$?UvMDT!^`g(Cp+^V*l=qxF@mGiG4C75HC z$1QZf&^muuFlTIf&pUJ6EO{vEiljPB!y>QR$JN1Q7jp*(4Tr`PK{Q%dN9UzNR))~D zd)BaLJhutvsvoPXD&5`PJA>L9N!+AElWF-K`~@s*Y;lp1MBadXA{$DElGkN4)sm8u zb~hY-kGB+yNE9InD8XD43d>rhM9?vLSJwsj)vEaE#z(Jr}}i7V)(y z<13{ZAHQ&p2b_uc!hkY8rkgh_rW>DjjVB}v&5Y=<@$0e=u`rIei$*>vf5&A%CFhfY zdU?havF@jwT{{@jiuN965loB@G6E(5y_p+k;bwf`;TK={3K1< zGNyTvG^d|LZf|yXn}^f6GwZ+9$04)zhixR+>Y^ecLeo9X5LPHNUdQ2Gb~CH_nFyK?{ZxW2q|hZpeaS3b%M^Bd*)TIQKO zV&TJb$xmfNm~bwVZswV{il&J(Q=iK678>hc)N-YJdH9lWpThr;0G|w@K~RX&b5`-! zq&u!mT|7|l7?q6?>;%8qq@HqbR&PR{%VC${)YbSzSax4vD!e>S>NviUZ~T*AODX(3 zfkT*-%wTPhCbr|;lNIEw4fV%oAljfcW9&uOfxn0nt2t?JnSU;2pdV6d5W6{C>ojkx zGTdP}-QKhib=g|>lHc9Xz)$ZFFOHnh#=Q(o@5s`|tB#VCn-1RWS}z)1xiio1M{>2d zcgR@)Z5y_kh}yrwmnztE993Iw9$EMZb-R$>{l{x%BQtWpztW$zb-aC6iBw5l%Hn

    4H=RxVzfUY}QFp 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 QD;y9dd3CvB8Pn(g2j7BWS^xk5 diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.map deleted file mode 100644 index 2d6d7a7..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.md5 deleted file mode 100644 index 48ae7fb..0000000 --- a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1349874a295fe4607bce4f148d38cc42 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_boost_a_o_d_e__inherit__graph.png deleted file mode 100644 index 39522192926d7977faed4ddf582b693492e4af22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12761 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 Hv^@V0i7Clx diff --git a/docs/manual/classbayesnet_1_1_classifier-members.html b/docs/manual/classbayesnet_1_1_classifier-members.html deleted file mode 100644 index 1e44557..0000000 --- a/docs/manual/classbayesnet_1_1_classifier-members.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -

    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Classifier Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Classifier, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights)=0 (defined in bayesnet::Classifier)bayesnet::Classifierprotectedpure virtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title="") const =0 (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierpure virtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_classifier.html b/docs/manual/classbayesnet_1_1_classifier.html deleted file mode 100644 index ef57099..0000000 --- a/docs/manual/classbayesnet_1_1_classifier.html +++ /dev/null @@ -1,1348 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Classifier Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::Classifier Class Referenceabstract
    -
    -
    -
    -Inheritance diagram for bayesnet::Classifier:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::Classifier:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    -virtual std::vector< std::string > graph (const std::string &title="") const =0
     
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - -

    -Protected Member Functions

    void checkFitParameters ()
     
    -virtual void buildModel (const torch::Tensor &weights)=0
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Attributes

    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 15 of file Classifier.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Classifier()

    - -
    -
    - - - - - - - -
    bayesnet::Classifier::Classifier (Network model)
    -
    - -

    Definition at line 12 of file Classifier.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ addNodes()

    - -
    -
    - - - - - - - -
    void bayesnet::Classifier::addNodes ()
    -
    - -

    Definition at line 155 of file Classifier.cc.

    - -
    -
    - -

    ◆ buildDataset()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Classifier::buildDataset (torch::Tensor & y)
    -
    -protected
    -
    - -

    Definition at line 30 of file Classifier.cc.

    - -
    -
    - -

    ◆ checkFitParameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Classifier::checkFitParameters ()
    -
    -protected
    -
    - -

    Definition at line 79 of file Classifier.cc.

    - -
    -
    - -

    ◆ dump_cpt()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::string bayesnet::Classifier::dump_cpt () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 184 of file Classifier.cc.

    - -
    -
    - -

    ◆ fit() [1/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Classifier & bayesnet::Classifier::fit (std::vector< std::vector< int > > & X,
    std::vector< int > & y,
    const std::vector< std::string > & features,
    const std::string & className,
    std::map< std::string, std::vector< int > > & states )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 57 of file Classifier.cc.

    - -
    -
    - -

    ◆ fit() [2/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    Classifier & bayesnet::Classifier::fit (torch::Tensor & dataset,
    const std::vector< std::string > & features,
    const std::string & className,
    std::map< std::string, std::vector< int > > & states )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 68 of file Classifier.cc.

    - -
    -
    - -

    ◆ fit() [3/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Classifier & bayesnet::Classifier::fit (torch::Tensor & dataset,
    const std::vector< std::string > & features,
    const std::string & className,
    std::map< std::string, std::vector< int > > & states,
    const torch::Tensor & weights )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 74 of file Classifier.cc.

    - -
    -
    - -

    ◆ fit() [4/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Classifier & bayesnet::Classifier::fit (torch::Tensor & X,
    torch::Tensor & y,
    const std::vector< std::string > & features,
    const std::string & className,
    std::map< std::string, std::vector< int > > & states )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 49 of file Classifier.cc.

    - -
    -
    - -

    ◆ getClassNumStates()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Classifier::getClassNumStates () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 176 of file Classifier.cc.

    - -
    -
    - -

    ◆ getNotes()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Classifier::getNotes () const
    -
    -inlineoverridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 38 of file Classifier.h.

    - -
    -
    - -

    ◆ getNumberOfEdges()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Classifier::getNumberOfEdges () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 168 of file Classifier.cc.

    - -
    -
    - -

    ◆ getNumberOfNodes()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Classifier::getNumberOfNodes () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 163 of file Classifier.cc.

    - -
    -
    - -

    ◆ getNumberOfStates()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Classifier::getNumberOfStates () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 172 of file Classifier.cc.

    - -
    -
    - -

    ◆ getStatus()

    - -
    -
    - - - - - -
    - - - - - - - -
    status_t bayesnet::Classifier::getStatus () const
    -
    -inlineoverridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 32 of file Classifier.h.

    - -
    -
    - -

    ◆ getVersion()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::string bayesnet::Classifier::getVersion ()
    -
    -inlineoverridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 33 of file Classifier.h.

    - -
    -
    - -

    ◆ predict() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< int > bayesnet::Classifier::predict (std::vector< std::vector< int > > & X)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 103 of file Classifier.cc.

    - -
    -
    - -

    ◆ predict() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Classifier::predict (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 96 of file Classifier.cc.

    - -
    -
    - -

    ◆ predict_proba() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::vector< double > > bayesnet::Classifier::predict_proba (std::vector< std::vector< int > > & X)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 124 of file Classifier.cc.

    - -
    -
    - -

    ◆ predict_proba() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Classifier::predict_proba (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 117 of file Classifier.cc.

    - -
    -
    - -

    ◆ score() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    float bayesnet::Classifier::score (std::vector< std::vector< int > > & X,
    std::vector< int > & y )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 144 of file Classifier.cc.

    - -
    -
    - -

    ◆ score() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    float bayesnet::Classifier::score (torch::Tensor & X,
    torch::Tensor & y )
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 139 of file Classifier.cc.

    - -
    -
    - -

    ◆ setHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Classifier::setHyperparameters (const nlohmann::json & hyperparameters)
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 188 of file Classifier.cc.

    - -
    -
    - -

    ◆ show()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Classifier::show () const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 151 of file Classifier.cc.

    - -
    -
    - -

    ◆ topological_order()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Classifier::topological_order ()
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 180 of file Classifier.cc.

    - -
    -
    - -

    ◆ trainModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Classifier::trainModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 44 of file Classifier.cc.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ className

    - -
    -
    - - - - - -
    - - - - -
    std::string bayesnet::Classifier::className
    -
    -protected
    -
    - -

    Definition at line 47 of file Classifier.h.

    - -
    -
    - -

    ◆ dataset

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Classifier::dataset
    -
    -protected
    -
    - -

    Definition at line 49 of file Classifier.h.

    - -
    -
    - -

    ◆ features

    - -
    -
    - - - - - -
    - - - - -
    std::vector<std::string> bayesnet::Classifier::features
    -
    -protected
    -
    - -

    Definition at line 46 of file Classifier.h.

    - -
    -
    - -

    ◆ fitted

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Classifier::fitted
    -
    -protected
    -
    - -

    Definition at line 42 of file Classifier.h.

    - -
    -
    - -

    ◆ m

    - -
    -
    - - - - - -
    - - - - -
    unsigned int bayesnet::Classifier::m
    -
    -protected
    -
    - -

    Definition at line 43 of file Classifier.h.

    - -
    -
    - -

    ◆ metrics

    - -
    -
    - - - - - -
    - - - - -
    Metrics bayesnet::Classifier::metrics
    -
    -protected
    -
    - -

    Definition at line 45 of file Classifier.h.

    - -
    -
    - -

    ◆ model

    - -
    -
    - - - - - -
    - - - - -
    Network bayesnet::Classifier::model
    -
    -protected
    -
    - -

    Definition at line 44 of file Classifier.h.

    - -
    -
    - -

    ◆ n

    - -
    -
    - - - - - -
    - - - - -
    unsigned int bayesnet::Classifier::n
    -
    -protected
    -
    - -

    Definition at line 43 of file Classifier.h.

    - -
    -
    - -

    ◆ notes

    - -
    -
    - - - - - -
    - - - - -
    std::vector<std::string> bayesnet::Classifier::notes
    -
    -protected
    -
    - -

    Definition at line 51 of file Classifier.h.

    - -
    -
    - -

    ◆ states

    - -
    -
    - - - - - -
    - - - - -
    std::map<std::string, std::vector<int> > bayesnet::Classifier::states
    -
    -protected
    -
    - -

    Definition at line 48 of file Classifier.h.

    - -
    -
    - -

    ◆ status

    - -
    -
    - - - - - -
    - - - - -
    status_t bayesnet::Classifier::status = NORMAL
    -
    -protected
    -
    - -

    Definition at line 50 of file Classifier.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Classifier.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Classifier.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_classifier__coll__graph.map b/docs/manual/classbayesnet_1_1_classifier__coll__graph.map deleted file mode 100644 index faddef8..0000000 --- a/docs/manual/classbayesnet_1_1_classifier__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_classifier__coll__graph.md5 b/docs/manual/classbayesnet_1_1_classifier__coll__graph.md5 deleted file mode 100644 index fe2a7df..0000000 --- a/docs/manual/classbayesnet_1_1_classifier__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -11b68cf05c82a53d413b124afb143844 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_classifier__coll__graph.png b/docs/manual/classbayesnet_1_1_classifier__coll__graph.png deleted file mode 100644 index ff1955ab8f956aa7d4a9e20452d9414bc72beed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8752 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 diff --git a/docs/manual/classbayesnet_1_1_classifier__inherit__graph.map b/docs/manual/classbayesnet_1_1_classifier__inherit__graph.map deleted file mode 100644 index 7c975a0..0000000 --- a/docs/manual/classbayesnet_1_1_classifier__inherit__graph.map +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_classifier__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_classifier__inherit__graph.md5 deleted file mode 100644 index ffe3469..0000000 --- a/docs/manual/classbayesnet_1_1_classifier__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e8eb745ffa2d265244d915fc0e5f0ee0 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_classifier__inherit__graph.png b/docs/manual/classbayesnet_1_1_classifier__inherit__graph.png deleted file mode 100644 index 410aacc6728d0e0dadac8675472cd8cef18f9a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43117 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 SA-a!(FOB_&)e81npZ{O$=rQX6 diff --git a/docs/manual/classbayesnet_1_1_ensemble-members.html b/docs/manual/classbayesnet_1_1_ensemble-members.html deleted file mode 100644 index b30b233..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble-members.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Ensemble Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Ensemble, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights)=0 (defined in bayesnet::Classifier)bayesnet::Classifierprotectedpure virtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    compute_arg_max(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    compute_arg_max(std::vector< std::vector< double > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    Ensemble(bool predict_voting=true) (defined in bayesnet::Ensemble)bayesnet::Ensemble
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfNodes() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getNumberOfStates() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &title) const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n_models (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_average_proba(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_proba(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(torch::Tensor &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_average_voting(std::vector< std::vector< int > > &X) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    predict_voting (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    significanceModels (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Ensemble)bayesnet::Ensembleinlinevirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Ensemble)bayesnet::Ensembleprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    voting(torch::Tensor &votes) (defined in bayesnet::Ensemble)bayesnet::Ensembleprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Ensemble()=default (defined in bayesnet::Ensemble)bayesnet::Ensemblevirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_ensemble.html b/docs/manual/classbayesnet_1_1_ensemble.html deleted file mode 100644 index 0658cfc..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble.html +++ /dev/null @@ -1,1007 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Ensemble Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -Inheritance diagram for bayesnet::Ensemble:
    -
    -
    Inheritance graph
    - - - - - - - - - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::Ensemble:
    -
    -
    Collaboration graph
    - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     Ensemble (bool predict_voting=true)
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > graph (const std::string &title) const override
     
    std::vector< std::string > topological_order () override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getClassNumStates () const override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    std::vector< std::string > getNotes () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    torch::Tensor predict_average_voting (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_voting (std::vector< std::vector< int > > &X)
     
    torch::Tensor predict_average_proba (torch::Tensor &X)
     
    std::vector< std::vector< double > > predict_average_proba (std::vector< std::vector< int > > &X)
     
    torch::Tensor compute_arg_max (torch::Tensor &X)
     
    std::vector< int > compute_arg_max (std::vector< std::vector< double > > &X)
     
    torch::Tensor voting (torch::Tensor &votes)
     
    void trainModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    -virtual void buildModel (const torch::Tensor &weights)=0
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Attributes

    unsigned n_models
     
    std::vector< std::unique_ptr< Classifier > > models
     
    std::vector< double > significanceModels
     
    bool predict_voting
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 15 of file Ensemble.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Ensemble()

    - -
    -
    - - - - - - - -
    bayesnet::Ensemble::Ensemble (bool predict_voting = true)
    -
    - -

    Definition at line 11 of file Ensemble.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ compute_arg_max() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< int > bayesnet::Ensemble::compute_arg_max (std::vector< std::vector< double > > & X)
    -
    -protected
    -
    - -

    Definition at line 24 of file Ensemble.cc.

    - -
    -
    - -

    ◆ compute_arg_max() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::compute_arg_max (torch::Tensor & X)
    -
    -protected
    -
    - -

    Definition at line 33 of file Ensemble.cc.

    - -
    -
    - -

    ◆ dump_cpt()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::string bayesnet::Ensemble::dump_cpt () const
    -
    -inlineoverridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 34 of file Ensemble.h.

    - -
    -
    - -

    ◆ getNumberOfEdges()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Ensemble::getNumberOfEdges () const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 206 of file Ensemble.cc.

    - -
    -
    - -

    ◆ getNumberOfNodes()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Ensemble::getNumberOfNodes () const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 198 of file Ensemble.cc.

    - -
    -
    - -

    ◆ getNumberOfStates()

    - -
    -
    - - - - - -
    - - - - - - - -
    int bayesnet::Ensemble::getNumberOfStates () const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 214 of file Ensemble.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Ensemble::graph (const std::string & title) const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 189 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< int > bayesnet::Ensemble::predict (std::vector< std::vector< int > > & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 74 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::predict (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 79 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_average_proba() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::vector< double > > bayesnet::Ensemble::predict_average_proba (std::vector< std::vector< int > > & X)
    -
    -protected
    -
    - -

    Definition at line 104 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_average_proba() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::predict_average_proba (torch::Tensor & X)
    -
    -protected
    -
    - -

    Definition at line 84 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_average_voting() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::vector< double > > bayesnet::Ensemble::predict_average_voting (std::vector< std::vector< int > > & X)
    -
    -protected
    -
    - -

    Definition at line 133 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_average_voting() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::predict_average_voting (torch::Tensor & X)
    -
    -protected
    -
    - -

    Definition at line 140 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_proba() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::vector< double > > bayesnet::Ensemble::predict_proba (std::vector< std::vector< int > > & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 60 of file Ensemble.cc.

    - -
    -
    - -

    ◆ predict_proba() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::predict_proba (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 67 of file Ensemble.cc.

    - -
    -
    - -

    ◆ score() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    float bayesnet::Ensemble::score (std::vector< std::vector< int > > & X,
    std::vector< int > & y )
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 169 of file Ensemble.cc.

    - -
    -
    - -

    ◆ score() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    float bayesnet::Ensemble::score (torch::Tensor & X,
    torch::Tensor & y )
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 158 of file Ensemble.cc.

    - -
    -
    - -

    ◆ show()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Ensemble::show () const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 180 of file Ensemble.cc.

    - -
    -
    - -

    ◆ topological_order()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::Ensemble::topological_order ()
    -
    -inlineoverridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 30 of file Ensemble.h.

    - -
    -
    - -

    ◆ trainModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::Ensemble::trainModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 16 of file Ensemble.cc.

    - -
    -
    - -

    ◆ voting()

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Ensemble::voting (torch::Tensor & votes)
    -
    -protected
    -
    - -

    Definition at line 38 of file Ensemble.cc.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ models

    - -
    -
    - - - - - -
    - - - - -
    std::vector<std::unique_ptr<Classifier> > bayesnet::Ensemble::models
    -
    -protected
    -
    - -

    Definition at line 47 of file Ensemble.h.

    - -
    -
    - -

    ◆ n_models

    - -
    -
    - - - - - -
    - - - - -
    unsigned bayesnet::Ensemble::n_models
    -
    -protected
    -
    - -

    Definition at line 46 of file Ensemble.h.

    - -
    -
    - -

    ◆ predict_voting

    - -
    -
    - - - - - -
    - - - - -
    bool bayesnet::Ensemble::predict_voting
    -
    -protected
    -
    - -

    Definition at line 50 of file Ensemble.h.

    - -
    -
    - -

    ◆ significanceModels

    - -
    -
    - - - - - -
    - - - - -
    std::vector<double> bayesnet::Ensemble::significanceModels
    -
    -protected
    -
    - -

    Definition at line 48 of file Ensemble.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Ensemble.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/ensembles/Ensemble.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_ensemble__coll__graph.map b/docs/manual/classbayesnet_1_1_ensemble__coll__graph.map deleted file mode 100644 index 03173b1..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_ensemble__coll__graph.md5 b/docs/manual/classbayesnet_1_1_ensemble__coll__graph.md5 deleted file mode 100644 index b723997..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b86ef25f6b5cae66beecc3e9ed01dc2c \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_ensemble__coll__graph.png b/docs/manual/classbayesnet_1_1_ensemble__coll__graph.png deleted file mode 100644 index 33f6e04e1c55b43dd667169ef3ddbb0519bed5ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11121 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 LMe!0*!_WT<{!Fk( diff --git a/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.map b/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.map deleted file mode 100644 index 27da9cd..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.map +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.md5 deleted file mode 100644 index 664bcbd..0000000 --- a/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d57ab6e4c37c557ee959ea8c8835847b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.png b/docs/manual/classbayesnet_1_1_ensemble__inherit__graph.png deleted file mode 100644 index dc895de4cf0b77646637296b7f0aace7c454401d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22170 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 WP@GV`>mq_|mhy1%alY#qeEdH?Xk|G7 diff --git a/docs/manual/classbayesnet_1_1_k_d_b-members.html b/docs/manual/classbayesnet_1_1_k_d_b-members.html deleted file mode 100644 index dacbb68..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b-members.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::KDB Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::KDB, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::KDB)bayesnet::KDBprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="KDB") const override (defined in bayesnet::KDB)bayesnet::KDBvirtual
    KDB(int k, float theta=0.03) (defined in bayesnet::KDB)bayesnet::KDBexplicit
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters_) override (defined in bayesnet::KDB)bayesnet::KDBvirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~KDB()=default (defined in bayesnet::KDB)bayesnet::KDBvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b.html b/docs/manual/classbayesnet_1_1_k_d_b.html deleted file mode 100644 index 2c77b6d..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - -BayesNet: bayesnet::KDB Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::KDB Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::KDB:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::KDB:
    -
    -
    Collaboration graph
    - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     KDB (int k, float theta=0.03)
     
    void setHyperparameters (const nlohmann::json &hyperparameters_) override
     
    std::vector< std::string > graph (const std::string &name="KDB") const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file KDB.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ KDB()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    bayesnet::KDB::KDB (int k,
    float theta = 0.03 )
    -
    -explicit
    -
    - -

    Definition at line 10 of file KDB.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::KDB::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 28 of file KDB.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::KDB::graph (const std::string & name = "KDB") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 103 of file KDB.cc.

    - -
    -
    - -

    ◆ setHyperparameters()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::KDB::setHyperparameters (const nlohmann::json & hyperparameters_)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 15 of file KDB.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDB.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDB.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.map b/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.map deleted file mode 100644 index d3088ec..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.md5 b/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.md5 deleted file mode 100644 index 69194a0..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -da61a083859449e9d8d630b70d27b858 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.png b/docs/manual/classbayesnet_1_1_k_d_b__coll__graph.png deleted file mode 100644 index d6d858cd52a8359f5e7c93d456cf488d9916b752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11240 zcmch7WmHyS)a9i+1O(|6q(QnH1Zj~H5JU+{>F$zLnir6gknU~-l*X6tk}gHM=6S#G zo3$p^%#Zmox|WLT-uu*f&e>=0{ZUh02@jhB8-gG_4*tw6MH&Hr zp}%>qBoEyqerLB8CO{A!q%1F^nWdd8Y{N-I_l3=a}=KZioX; z@y6@-uX9D?DIwJ&$qHR7T`W92yKS$KN&{_e?cj>_saFo6DJgov6-xYe_#Vo$zqzJV5!lERCWo3Z;t0F@wy)_>}fr( z$+4!e82w_rzFbn#KKG=d2kLBc-a78a;Wpi$slvp<>WU`kb6oq5HMkcV8k#EMEjTbR zK=Jn0)6*020~;F~IE*-2C0kpLwe|HX?{j+&lh#I=sriZ8K3`gBb0{r1|9Q$3?0%;( zYprG!)@N5PA|ir!Hf!W;wYjljIt&w-&LeI4dww3?Wm+`tEuhxZa?~E>yfv~KMrj`q z6@`OOBOXy%Svh#9I{iXX5gi?$Dq>^ft-QRv=|ba&i_5L7)uW@hU3 zQ1-y9q^L;R(2#;(4F!@{QeqSkc<6iePsYTA2A@`Pfo{+4z2SO00d&-MPGd2Y8c6GZ zQ`L7<(Q!wy?00P!Tng9S8qMm*p!FG}vwJ-aKgrEyAR#3+IjaNH3j8{3M@mAX-<~mP z4GYW2$Pi88OCNsnDcW;GhR11qKFs?0zdOo$?lNH9D-bUu-tp8p(A0 z@Bs;W`|h3D?!>pogZla7eyO`Z)l$N{S5!#Zt*unQfB)9Cao9DSZ};CTYj|_@Z-*yM zRnO<>)X?%_yzqxL`Akb~@C=??CuCGO#-FAd5gQxU&>%EdXA=%)mh<&1D)cEeHKN`3 zx_fk#U}$7w%K(rEHRM;BGX6_7Z*RiyFSW$QK-H>mV**TKpP9Tu*44k5f5ZJlF{XR zz8LO*cajAKC`6H(ZT$G0e8rX7PL($vk?znw`_x!(x$LydFcXCJGj;X8o6D0N_~gy@ zRJn1Ki1VgVeR)Y)Uiq}&^?{Iwmsc*BK0Q6Xu+s+Sn>TNc&pYm^vwZ$yDaKH^_O@q; zx?k#pJIXxB_=0#FD_D_ zY!27d!t;~}eC}`0p@53^D{QbQnE3c%g@r5@!!Wd(StA>N6*aXot>+-@Z*FftXJ#5_ z#Z3x|x$Q^rKf*1o0Q-P!>f*wG^7n6Qe7r0zEp1<4Upx~A9>sUpy(uj?zlEhGd~q?; z+S=Nv!%t$q!C`b@Kqda|n>P#+;^O+cx_xVFZ`^i%g>tuFFmM|+b`rCwS6YsKF{-yE zkE0Ulb~~7>%FYf*N=h~irn-9fv`JUQWt$KWUCt*sbhFC5pX20< z=O#HwD5(}TY2gI41qIgP&YQSkM&RUrG&Tw+Cnb&d^z>A(f>086-PMWT0GDJIMEmB} zR?XM1Az*JagdAv;;%J6n``;$1tE(H;T0PLn6je}z>zkOU|MeGBpA3H%Pau8_W%=KE zme`qG(VHm0w37TcCg*e5v~{sxGy31q+8SwGj8Eoaq zg>Ucg4^>w`1ySZSk|E;a=4PR#^?;1qWa!6_XYm`a9NH9UX|pKmhSG)Na&mI&&I+TW zahsc)|AMV8XlW4xD|mTy_wpM%f5qUAC*p?JSZWNqNJ~Rb&dxdTonw$@d;0q^y1Kgb zTRnKGsHh+aaj!1^tXG-!pr@)b+s@Tu5lG$eKr1s<=1*8zW$y28#~U18|2vo`vzaOl z)W&Y}I_>VK^^ZQ?o6dXHV2_E3**R7A%4Xultr-p%7gtefY3T{abMVbibu zsXiD#sv3|KB&l@;rJ*|6gRel09y6ci-=_U#*383bKiT^S~OU#x~dASeF_DhVN2VloRmD4RLH*JnS5 zhH7m$K=`h8hvEqPUh#+FQHFgaW?>K#A{$KR>@km%2m@(Jf38e&N$(-U)Lg4cvD=J! zf9&c|8lUUgq9JYRG6LF8*ogxWxn4@jJEqLg3lK{Od_k5bmEr@|O$8Up3_X}{ zFb6q9zv>Mdlnn-*X>zuV`CVLp{##f?1W}PLHWD;=Y^FFCKqB9ssah8}zic+fET$lo zbXCX*(mz? zNv^G}NfV`|rC|~f^n*(BDLFX|1bK#(KTW2ntE`8IN2cDplA0-IX#3P_Fk1xLUuvVw z^1HImghQXw)1&tHZQoj2n(s}OrSg~|i@G01gG*s}&{8L303=TRHZK9)a-)y4HI~!6=aW+(>gH#Y?UsmYr+hn_$@wg@z0VJ4T0Ku*R`7|7 zQ$0`NQqa^S1m&K`Y2#U`eid??_jx^4^n&xK#09uS$Gv2)p+*n1JAk6P!OFQ`rGQi? zE+GL<5qH4_u9hlbGxe}x@?{f@cR1a?`6Gz6e`jX}>V@kd4I3C3AhO%1PlRr}6CWid zB{TS~iD-TQX@L^Z`}B#J`=Jr?3U|kicHSaLQq4_GRUiXR?44#jeTU7?#%A?2P1t2y zQ&dER_sNrp_V#w8b{~}i#;cIJc zZ3LHo@b6?le?@)lmF*ULjJ4t3U_M#NZppV8>-u`%tWuEzgWsKjC@wB8wb9md%_H&g zM51D1Cw0>%jLOL=De&IjQ0}&W+A*gbhP42X#Qr-y%?}U9DAdTZZ+fQV>t9R(FO7%6 zR4_0w{7xtJ^lpqw_-8`1cR_98YU#NJp(@Z$H9I>y!5_oa^!6uFSZJtmeOqx!0E@<# zQr_2a{<|%y`&9sGI1VQCjP2rULxxUu5a%3J~(+&@_>*~bFbW&-VkN> zJYC3>KZ8(qMq2g-CcQ0P4r>UZV3D&bA0uNP?;c_9&mRK=&HKwOq-D=f(~n9@9>PR3 z51D@ARl{dA>ZhvY^pf07SZD4C`*fv22VvW}DKv5V&boXcPRwIlta7N!m~XBnc{A*7 z8HR+>wZneYp1mQmB}!^J38|<{XGbyy>+Edka5CB$X*%~ab ze>lysQ(>%Z2@-YIwYqMG(#SX+yb~pV`KZ6+*|lOhIvhVWAx+VPFR5+8cHZ(yMF}Am z#1E4?Eg=q6q-|4lEzFf+C%pRz96ipx8!aQgpxwN{>%*6k+(ekDR>-dSnm4S>zGD#D zV>yZGkKol)G86{@)ky>DU!IVd1_f!MNd8jwxXn5*YQEQuwtBc3+&mKe>u4OwpK<23 zOd66f6o6dB8k_!wwDuBv7}4Vhn!$-K<6}JnQ%ovf@C1z&RYrHdDp4v4Yvo~pWuM-W ztB0yTB>o29WM`v|$<`LIr=NhRB$6bHj(ncXf7xLvjUTh^rnwEX6X2`HT+r-)6|EwJ zq+e*QU-`cDDxY_cIL1M(6RE+ejhCX+`RndiF28Ua|G01b`4^h1UZ(I1xed;Ug@vUM zPTG8Iq*jd3=JGFl%EIv%3ECGTY=L_PKD{F`26W;5@z@+(|6F^| zc79#^Q{S#6#P5|;765j`a;oxC$R)M|Tuvsi=$~@$tRkx_KO35Y!YNJ{Wnw|iUE9lm z*xlbhE`G2d2(7V!#eXR2dC3((P)22kjBNo?Mn>|w-uaMsy#My*7m5&D(KEL9*sgbL zC|DMj4V*W6d8E^k;3X6bKGHx}Kjk6pnTZ}Of?g#yk!q_|#2Z1o8ch2ATry~_qEf6w z6Ek&nq(rdcPN^d;5mZU!_cV5Y*T%zUyF!FE!&xumYl-ZJ@Ua4}Mtf}n1QHTD4Mrmc zY3B>8r(|Sn(z3fLJ6^MP2&<(&JQfLXP{qGsW(#bXuM!`B24c^Z)1BWgFqf=oGhpRj zebO5JxZwxxy-Ew|Y`3zNATc<<1d8J-Z5|{Z6fj3}Vj}_ZXLM-Nxu}+d^~@^)>A6=# z(o$@(J}%4I9WVN&5_ZoM@RN=pL^i>t~LF zYV3EFC2e_27iHfn4~V>{8A`#9psg_`HB~;k#|VvKYLA%f`wV7yGa7zNP;VaU%n%TZ zAGsMeE?bin5vQ}6E2|pVt@y+?ExEI0-#DT1QL0zl9~)$oSbW2o+KH}y@PC!+ zLUqdQeJ|x;>!tvPWg@RqkqKlf{8MnW~Y?$W|q)v1Ys&4%fqA;_P4=q0FU) za<2$V8ID;pyD#DtOSlh=U)Y>@o7!WnjHd>sB_{GKv%Y*lL{wc>e(nQ03_EIS>ep^= zZhrPZKGDC6(b98fDBLR3MC=Qx8AXIEMHM~U=kvLif~mezVYGmfykJicMp`p`#xkjN zkZ>2X6Jam4v{o1N6$Ds_U}ZYs#q)~?aL5N6YebPOQ*xU#)4BHmuIP*-=~NmXV2RqXMb~2+i9?bn(5>&8w{g zhy%3a`!7C!{=7*o=C)7>-$_Q^hUoC5xdM6s@^=Q!1co)N9=&rIVoTIMihIPn)(akV zadmY3!7$6k!BLw1r$HLdEM;scmf!e>{|?zSUppdBeZ}{TOBsSPkp8iFMrrTz=1=fJ zS9_;kw2-;7q#4g6QTyfgwsiHvC>9Y;e*W5;ygYLa=-kWGb9koCCM8O}@H%m$MKP}` zL3@`LIz)qlyBvcHtY0HvoZ|^CjE#?v{}GG_b4xJapIWz&m3;xJeE4lO6wr;0yq8Dh z+0pi#C_sBRAMilpnd;|g(5D+mz${qG$;ovfnNIAu_)<|*vmgr-laii2hHxnb_elaY zki<1jO#D~^g1}p$d5SS?xL8;QC@XZ(woCIhB>dTDYoW<`7Xa`rzt{E|)Xj6H&#WS& z64wS={-6fNN&7H&S^ImnNn${W%@>{4YH+`@v!}|U&@uhx`r{}Xj4=gP0qoB6l-9HL zBb;U274-ZGjggU&@XX9i0u+ysx5oabIyWQZOK1_y@~q_y_Y_H(LHbg5l=rpZXx|=H z!%F-Y>O0bdgFSl}H45Cu;8{Y6IjtY04AL@(mYV?n!`52ltgg zfSaQ8(OZG*EudthbKbwfr(fa6t(Mhax(eX0x zWd;~@7cpqhTQ?r4h+j1IDC4u2x4L=hv?-4VTfSGiYJs`?qU&_iZpC937I%i(OVBn+ zDJd$#N;;Ck9R$Rq3r;`=h>Oy`qPnJpF_J0c*0_@+)VtycR`$N)x-+hC-wa6`&lMHw zP^7UQ9>KnlCR&1Aeacd})h!C{MYI}dife2&cF)!$7AAll!Y@br1T+Hq+qX|bdc+;v3!R9^AW(bzw+gOVprd`M|j5AK=sk4`b{Z}U`2$8R^D#?^}ex&99U38g#nx#l5d~h z)AKC$WPhB)T0T3#yNd^n%BKk(=5))ox@*gc-r=1Xo#_m9g&#{E@S9E zEXqH2 zA|9JbtGe$?r$#030==)WY?pqyX^17JO+5gIL4!rd1I6RJzxzz?L69ITpVnzFtZ!@m>zw#n`M0lJhF^mS z)@@&4XP&67k8e5-j%v2g@CflJmJf<)!&07A25LcNXh=b2Ns+ud%AW@mtimY-GeW4M zc9cch15u0pKjD!fWp7nq%uEi9zkf*b1`?-E>J*~z3B}*+g4{fGMWyHhS;l?aziT%PffOl{Lk@mKu1SM+aRIZ z1n9c|oQz7%w?va_^!=|2MPNw5|I!_O8nX?IrICmP(!^W~Zi}${A(e^8Dq1wP7%AX> zQ+dtN)iZ?6JliTO2?4312>R*ZQYmh30>lpry}hpmMg4As-t$oRz;ck@4My?E6o z;~q@>ud*{Ts7eiL`j*}q@%j7vKf(?3>X2e&L_x6gPEJo57#Mi$7ldzaPDYQ<&-=TA zF_0j@0(t<}ku%4w?WK+m9VaIqtN;nh&CB}?gGEaEUeSS(0lR4b=@gru3)IFn0&3Ck zSI?A{a{wu;TwPiD2@MS`#rHLkBLvh+^wKAPZ*9SC1*c&Sg6W=sz6Xjzn(EN#XoY)v zrkFdZhO%vY6ufUx85tPf*YUmiju}fO63>*Dl%xRF?H1X*(%*w8T|JKn#F$Zoedgr( zM4g0kb!lnzyLaz&Q!1P`hsY^#!$`09a%5+|PmS#ZMm{e$ccws%k}dzD6NR9%u`!hi z@V3%YQc`Z)V}XEhSxeB6RF0>T@)OU?%i}zF6r<>NxR6FEXiKMDke@%kyqpE-fPeq~ zZQyXXnqt9HUi+m9EqO447y#8??{J|hfyr~@$AjjU7U!Swk8J@BcE%1*c05dRh*f2Y)FV`;Lx`6abb&ugtI)FkH^_ z^>(LM3y=9ji~6RD`tu}xE=6(D)6woZuF)@#o@hSKt0B=;|BeS@;n3kN}2MEd< zz|obKmNF?bGc*6{=?Mlq$-%{Ck-}wsu@=Ss7hneQ4{N9ZX#IRQnEdC*XGX*laj>!V z4GeyU;*dE3WXZ%G#tbPcDpmv97?6U1?Ac_=@_AFIR(g7dcIVBFPjX^n zC72ozJJz?y^Dg%)I)459`7w%=bM4!U!Xj&m!NEbBkRN~6`#I~xk2_I(?k=~=>Xql* zylBYCl=SrUC}I>#j!I}?Q;4&fEbP$3R%+eH-drQ<(;WE>rNNV!dL0l@=F1AdUl@5aM+rV@!c0Smzv_7F(nLc(tQ zkASE**5U7u;E}^Y!? z<9fDl0HPg`j8Ny@?e&NC7$F9rdsS6cJyTOt0DL&qIXyjHy#S^c4XAbTi zJqd`)nQr&>ersW2*ggYviCz!~j#vMz0T{&v>W#d;Jy$a4tFV3=Z(Q@f=&ITh`0de_ z^Ggo{8@Mi5SSVoO>+KgKS9`*zJ?ub!dcw_J@v!edcK0C(iBVODo|D8i7exw{b-gBY z!cQlSl|U4X$`9*`su{u$SkyD5Tigy-wze>!nObXNaQ+rp)qqc|wT7cRZw_?HyCcbzdt;IS#2#ZPI3T9jXdn^ zQA{HL4}7O*3~zfeuT(sOIYscoK=)crqg#R?oX-d^03fU-mC4A+KrfcegiyVf{)7AE z%ADelsc8L+ZER$;y|E#0X=w>s7K8G;1c843GP@{na1*nISO3mc%wbbkCewCWdJN_; zSsnA|R=O!kNxcYV3wA&6&@p+T4fLp2_Oyo8Z?Ss1ySe5~CLbOruxL!BR#;QqpJd%T zF1Py%E?*nyr89A^T0{Y{hDO*i0PwhFdYrC^aBNP#)3q!+st4kIF02Gk?bXKCmNSrI z_7_`(8f<5OW$zJ9XN6d-f8td$`<#~cF^$i1?IX*V&bIRi`=CI*sAQ0o@G&uLU$7jM&Yu(TF8KHhcg+ zUTPKFND$zB>WMw}Ox(5*e47zG{}7n~WsECr3zN<#GVsgUHir6N@&Ehz{09~M>Hp^5_@9pR|MTOC zZ8(H@EX>S(uUTDxEV=Thx(OjYZVITHSW4ngOiAH>ExEj;5CNk)Fb=Ttkns8!kY|o_ zTO`qTU@Q|1IPIt8F^b+P^jvwNehKofhlhtCb5^;NccTN+U+}q=pxV;{1QY&$T7Huk z7Y9%yKWAh_Bb*sa`TWHf7aq8@l2iaB)enhz{$=vJSjE5v9s}U@=mOPK%fP_ea}f?F z29n6}>1o{%43y;$&;IA0f6J zogd9qp#Zt7Mm0;^ljx}R1Rr=`#()3-Ndsi)D!2RS3ro>2TlO5)7{YQY`Vc4v!1X?;cBC17uNRsJMU<~@)W-(Qi}>HDC)8m zGzX@enHoz1Rc2y@`U&cN_v|b%TaY8vX-#cy)=@Bk^Fr2XdabA)dKNVE!|jsp)#ut}R2 zJFvBdUykE^Ri9m2iVM!g5FctU=Fc=saD;mpue0;_b1`SZq1Y}Q~=4$~Gnm+y(Q6LW(3dhxM zv?uw;eUuJ#EG!u8dgb!KRsnuhdY)JS+YlWO4V^gYEj>+q;?*P7@Ry zi~{UI(EvOAJ6fiF`0$|zSO~Arg<~|01O)>0UmrA#gBp*(BEYiI4|HmD78VvC@ZU3y z9~d`BGI3Vc#t%O;DpfkJ%5H3Itbq0QgEGxy+8H1^571^WTtg~`^+iGF@-i(n1{^6A zO3^9mDAE=d%m4*bLY+WR)jK)>{XjUN@g`DJ;^TvWkANIjKo6Dzd{+IywNkNrLZ}uO zZ5?UY7fX!;YBJE88J;}B1P4g>5#U=?baaF%24Ij-ph1E#B_t$-YG$K>N{j;ig2Q>O z#^?aR*#2UH){ShzFAccj6O#!4hUD7pfajT1V*8N7Y zuA|b`+l$8ZIX+(dNKgUJtOUzN*U%WHD2xZKSpQO+cTQqAz*?UZ6H)U?n%$4=v2fZ< z;yOE}fuz2k{K~!ysCXcbP@o@!gL0swH1YhMM6tIsSH}+2Zk~4oB!dqS$ei%OgFvv? zhD&4VCAb-EYc+1bg?IA z!1kQGEd&_jdf@PrVjB{*U~pM-ii$8TYRK{N@gc6*lRAfG8X!^6RKLUd;(aLMa=C6WMl|= zJt8VfuEXz^<3Lv`rd%|rW@>Y?xY@Pnb%!6qbq9PW9{^dM2e#3b%lv5?aR1PRgoPQ} z%>##0XYZ?KCjN9O5eYH@D_9tyh*2OQj8-}>9v>v6f zu|p03cVl31kn>2&Z9nyQ-Jsg*_cs@R9Npdf2a?!b$9iLGF$f;Qf*T-Xi;s zTQ>w~R$&DOM3hmU{o7}^j+$S5dPUZ?MY zg9Q}>V|}G77~$tYC!oQF>I%4jZ)}8E!wXhpgqAvi0fdl-27hHu?f9iog*WhVI4rj} zZhi4y+1SuAzx+Lz^6JjN2T!OI*kl0WuDT@U9OwU8I1}_zqUjcxHR~=tVW91IbabrD zFw_MQm&(YiBN^Gl5vd z%tmfa#q297+A5P5rwXqoCYb{UmoT}%pN@(9<3=(61_nF*27Bu6?rxANOc7X8)9EW~ zxdAYY@B*j|YPNjdr~e(Sn8V7X!Fhq2xNjU*88~a}R_Ttn_7`v}fgp#^wV;}bUD^W+ i>i=kq#T-w)lfp!Mjz+-JI0dY`kg|fhe7US?(0>CSiRJbH diff --git a/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.map b/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.map deleted file mode 100644 index bd698e3..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.md5 deleted file mode 100644 index 138d696..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f7a2fcb142d7e60993bfdd827f6f96d9 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.png b/docs/manual/classbayesnet_1_1_k_d_b__inherit__graph.png deleted file mode 100644 index c151753ee436a1b688712d802b244b95ebb31163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10088 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 diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld-members.html b/docs/manual/classbayesnet_1_1_k_d_b_ld-members.html deleted file mode 100644 index 8fe1817..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b_ld-members.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::KDBLd Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::KDBLd, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::KDB)bayesnet::KDBprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::KDBLd)bayesnet::KDBLd
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="KDB") const override (defined in bayesnet::KDBLd)bayesnet::KDBLdvirtual
    KDB(int k, float theta=0.03) (defined in bayesnet::KDB)bayesnet::KDBexplicit
    KDBLd(int k) (defined in bayesnet::KDBLd)bayesnet::KDBLdexplicit
    localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::KDBLd)bayesnet::KDBLdvirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters_) override (defined in bayesnet::KDB)bayesnet::KDBvirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    version() (defined in bayesnet::KDBLd)bayesnet::KDBLdinlinestatic
    Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~KDB()=default (defined in bayesnet::KDB)bayesnet::KDBvirtual
    ~KDBLd()=default (defined in bayesnet::KDBLd)bayesnet::KDBLdvirtual
    ~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld.html b/docs/manual/classbayesnet_1_1_k_d_b_ld.html deleted file mode 100644 index 46b2470..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b_ld.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - -BayesNet: bayesnet::KDBLd Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::KDBLd Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::KDBLd:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::KDBLd:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     KDBLd (int k)
     
    KDBLdfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
     
    std::vector< std::string > graph (const std::string &name="KDB") const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    - Public Member Functions inherited from bayesnet::KDB
     KDB (int k, float theta=0.03)
     
    void setHyperparameters (const nlohmann::json &hyperparameters_) override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - Public Member Functions inherited from bayesnet::Proposal
     Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
     
    - - - -

    -Static Public Member Functions

    static std::string version ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Member Functions inherited from bayesnet::KDB
    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - Protected Member Functions inherited from bayesnet::Proposal
    void checkInput (const torch::Tensor &X, const torch::Tensor &y)
     
    torch::Tensor prepareX (torch::Tensor &X)
     
    map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
     
    map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    - Protected Attributes inherited from bayesnet::Proposal
    torch::Tensor Xf
     
    torch::Tensor y
     
    map< std::string, mdlp::CPPFImdlp * > discretizers
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file KDBLd.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ KDBLd()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::KDBLd::KDBLd (int k)
    -
    -explicit
    -
    - -

    Definition at line 10 of file KDBLd.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ fit()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KDBLd & bayesnet::KDBLd::fit (torch::Tensor & X,
    torch::Tensor & y,
    const std::vector< std::string > & features,
    const std::string & className,
    map< std::string, std::vector< int > > & states )
    -
    -override
    -
    - -

    Definition at line 11 of file KDBLd.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::KDBLd::graph (const std::string & name = "KDB") const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::KDB.

    - -

    Definition at line 31 of file KDBLd.cc.

    - -
    -
    - -

    ◆ predict()

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::KDBLd::predict (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 26 of file KDBLd.cc.

    - -
    -
    - -

    ◆ version()

    - -
    -
    - - - - - -
    - - - - - - - -
    static std::string bayesnet::KDBLd::version ()
    -
    -inlinestatic
    -
    - -

    Definition at line 21 of file KDBLd.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDBLd.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/KDBLd.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.map deleted file mode 100644 index 0bc95ec..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.md5 deleted file mode 100644 index 5a460c8..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c341d14e86ad0c1b8e028db9c194d855 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_k_d_b_ld__coll__graph.png deleted file mode 100644 index b39b8d94f03dde91e43428f963686c3f284cf077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16788 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 - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 deleted file mode 100644 index 8da87ae..0000000 --- a/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -464954a9aef0437aadb100e747a29b93 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_k_d_b_ld__inherit__graph.png deleted file mode 100644 index 4240afd7b461da41f5941be8c5cc95c822423003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12914 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 diff --git a/docs/manual/classbayesnet_1_1_network-members.html b/docs/manual/classbayesnet_1_1_network-members.html deleted file mode 100644 index 7f66917..0000000 --- a/docs/manual/classbayesnet_1_1_network-members.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Network Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Network, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addEdge(const std::string &, const std::string &) (defined in bayesnet::Network)bayesnet::Network
    addNode(const std::string &) (defined in bayesnet::Network)bayesnet::Network
    dump_cpt() const (defined in bayesnet::Network)bayesnet::Network
    fit(const std::vector< std::vector< int > > &input_data, const std::vector< int > &labels, const std::vector< double > &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
    fit(const torch::Tensor &X, const torch::Tensor &y, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
    fit(const torch::Tensor &samples, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states) (defined in bayesnet::Network)bayesnet::Network
    getClassName() const (defined in bayesnet::Network)bayesnet::Network
    getClassNumStates() const (defined in bayesnet::Network)bayesnet::Network
    getEdges() const (defined in bayesnet::Network)bayesnet::Network
    getFeatures() const (defined in bayesnet::Network)bayesnet::Network
    getMaxThreads() const (defined in bayesnet::Network)bayesnet::Network
    getNodes() (defined in bayesnet::Network)bayesnet::Network
    getNumEdges() const (defined in bayesnet::Network)bayesnet::Network
    getSamples() (defined in bayesnet::Network)bayesnet::Network
    getStates() const (defined in bayesnet::Network)bayesnet::Network
    graph(const std::string &title) const (defined in bayesnet::Network)bayesnet::Network
    initialize() (defined in bayesnet::Network)bayesnet::Network
    Network() (defined in bayesnet::Network)bayesnet::Network
    Network(float) (defined in bayesnet::Network)bayesnet::Networkexplicit
    Network(const Network &) (defined in bayesnet::Network)bayesnet::Networkexplicit
    predict(const std::vector< std::vector< int > > &) (defined in bayesnet::Network)bayesnet::Network
    predict(const torch::Tensor &) (defined in bayesnet::Network)bayesnet::Network
    predict_proba(const std::vector< std::vector< int > > &) (defined in bayesnet::Network)bayesnet::Network
    predict_proba(const torch::Tensor &) (defined in bayesnet::Network)bayesnet::Network
    predict_tensor(const torch::Tensor &samples, const bool proba) (defined in bayesnet::Network)bayesnet::Network
    score(const std::vector< std::vector< int > > &, const std::vector< int > &) (defined in bayesnet::Network)bayesnet::Network
    show() const (defined in bayesnet::Network)bayesnet::Network
    topological_sort() (defined in bayesnet::Network)bayesnet::Network
    version() (defined in bayesnet::Network)bayesnet::Networkinline
    ~Network()=default (defined in bayesnet::Network)bayesnet::Network
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_network.html b/docs/manual/classbayesnet_1_1_network.html deleted file mode 100644 index 252deae..0000000 --- a/docs/manual/classbayesnet_1_1_network.html +++ /dev/null @@ -1,840 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Network Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::Network Class Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     Network (float)
     
     Network (const Network &)
     
    torch::Tensor & getSamples ()
     
    float getMaxThreads () const
     
    void addNode (const std::string &)
     
    void addEdge (const std::string &, const std::string &)
     
    std::map< std::string, std::unique_ptr< Node > > & getNodes ()
     
    std::vector< std::string > getFeatures () const
     
    int getStates () const
     
    std::vector< std::pair< std::string, std::string > > getEdges () const
     
    int getNumEdges () const
     
    int getClassNumStates () const
     
    std::string getClassName () const
     
    void fit (const std::vector< std::vector< int > > &input_data, const std::vector< int > &labels, const std::vector< double > &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
     
    void fit (const torch::Tensor &X, const torch::Tensor &y, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
     
    void fit (const torch::Tensor &samples, const torch::Tensor &weights, const std::vector< std::string > &featureNames, const std::string &className, const std::map< std::string, std::vector< int > > &states)
     
    std::vector< int > predict (const std::vector< std::vector< int > > &)
     
    torch::Tensor predict (const torch::Tensor &)
     
    torch::Tensor predict_tensor (const torch::Tensor &samples, const bool proba)
     
    std::vector< std::vector< double > > predict_proba (const std::vector< std::vector< int > > &)
     
    torch::Tensor predict_proba (const torch::Tensor &)
     
    double score (const std::vector< std::vector< int > > &, const std::vector< int > &)
     
    std::vector< std::string > topological_sort ()
     
    std::vector< std::string > show () const
     
    std::vector< std::string > graph (const std::string &title) const
     
    void initialize ()
     
    std::string dump_cpt () const
     
    std::string version ()
     
    -

    Detailed Description

    -
    -

    Definition at line 15 of file Network.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Network() [1/3]

    - -
    -
    - - - - - - - -
    bayesnet::Network::Network ()
    -
    - -

    Definition at line 13 of file Network.cc.

    - -
    -
    - -

    ◆ Network() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::Network::Network (float maxT)
    -
    -explicit
    -
    - -

    Definition at line 16 of file Network.cc.

    - -
    -
    - -

    ◆ Network() [3/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::Network::Network (const Network & other)
    -
    -explicit
    -
    - -

    Definition at line 20 of file Network.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ addEdge()

    - -
    -
    - - - - - - - - - - - -
    void bayesnet::Network::addEdge (const std::string & parent,
    const std::string & child )
    -
    - -

    Definition at line 95 of file Network.cc.

    - -
    -
    - -

    ◆ addNode()

    - -
    -
    - - - - - - - -
    void bayesnet::Network::addNode (const std::string & name)
    -
    - -

    Definition at line 46 of file Network.cc.

    - -
    -
    - -

    ◆ dump_cpt()

    - -
    -
    - - - - - - - -
    std::string bayesnet::Network::dump_cpt () const
    -
    - -

    Definition at line 420 of file Network.cc.

    - -
    -
    - -

    ◆ fit() [1/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void bayesnet::Network::fit (const std::vector< std::vector< int > > & input_data,
    const std::vector< int > & labels,
    const std::vector< double > & weights,
    const std::vector< std::string > & featureNames,
    const std::string & className,
    const std::map< std::string, std::vector< int > > & states )
    -
    - -

    Definition at line 177 of file Network.cc.

    - -
    -
    - -

    ◆ fit() [2/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void bayesnet::Network::fit (const torch::Tensor & samples,
    const torch::Tensor & weights,
    const std::vector< std::string > & featureNames,
    const std::string & className,
    const std::map< std::string, std::vector< int > > & states )
    -
    - -

    Definition at line 169 of file Network.cc.

    - -
    -
    - -

    ◆ fit() [3/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void bayesnet::Network::fit (const torch::Tensor & X,
    const torch::Tensor & y,
    const torch::Tensor & weights,
    const std::vector< std::string > & featureNames,
    const std::string & className,
    const std::map< std::string, std::vector< int > > & states )
    -
    - -

    Definition at line 158 of file Network.cc.

    - -
    -
    - -

    ◆ getClassName()

    - -
    -
    - - - - - - - -
    std::string bayesnet::Network::getClassName () const
    -
    - -

    Definition at line 75 of file Network.cc.

    - -
    -
    - -

    ◆ getClassNumStates()

    - -
    -
    - - - - - - - -
    int bayesnet::Network::getClassNumStates () const
    -
    - -

    Definition at line 63 of file Network.cc.

    - -
    -
    - -

    ◆ getEdges()

    - -
    -
    - - - - - - - -
    std::vector< std::pair< std::string, std::string > > bayesnet::Network::getEdges () const
    -
    - -

    Definition at line 371 of file Network.cc.

    - -
    -
    - -

    ◆ getFeatures()

    - -
    -
    - - - - - - - -
    std::vector< std::string > bayesnet::Network::getFeatures () const
    -
    - -

    Definition at line 59 of file Network.cc.

    - -
    -
    - -

    ◆ getMaxThreads()

    - -
    -
    - - - - - - - -
    float bayesnet::Network::getMaxThreads () const
    -
    - -

    Definition at line 38 of file Network.cc.

    - -
    -
    - -

    ◆ getNodes()

    - -
    -
    - - - - - - - -
    std::map< std::string, std::unique_ptr< Node > > & bayesnet::Network::getNodes ()
    -
    - -

    Definition at line 116 of file Network.cc.

    - -
    -
    - -

    ◆ getNumEdges()

    - -
    -
    - - - - - - - -
    int bayesnet::Network::getNumEdges () const
    -
    - -

    Definition at line 383 of file Network.cc.

    - -
    -
    - -

    ◆ getSamples()

    - -
    -
    - - - - - - - -
    torch::Tensor & bayesnet::Network::getSamples ()
    -
    - -

    Definition at line 42 of file Network.cc.

    - -
    -
    - -

    ◆ getStates()

    - -
    -
    - - - - - - - -
    int bayesnet::Network::getStates () const
    -
    - -

    Definition at line 67 of file Network.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - - - -
    std::vector< std::string > bayesnet::Network::graph (const std::string & title) const
    -
    - -

    Definition at line 357 of file Network.cc.

    - -
    -
    - -

    ◆ initialize()

    - -
    -
    - - - - - - - -
    void bayesnet::Network::initialize ()
    -
    - -

    Definition at line 29 of file Network.cc.

    - -
    -
    - -

    ◆ predict() [1/2]

    - -
    -
    - - - - - - - -
    std::vector< int > bayesnet::Network::predict (const std::vector< std::vector< int > > & tsamples)
    -
    - -

    Definition at line 237 of file Network.cc.

    - -
    -
    - -

    ◆ predict() [2/2]

    - -
    -
    - - - - - - - -
    torch::Tensor bayesnet::Network::predict (const torch::Tensor & samples)
    -
    - -

    Definition at line 230 of file Network.cc.

    - -
    -
    - -

    ◆ predict_proba() [1/2]

    - -
    -
    - - - - - - - -
    std::vector< std::vector< double > > bayesnet::Network::predict_proba (const std::vector< std::vector< int > > & tsamples)
    -
    - -

    Definition at line 259 of file Network.cc.

    - -
    -
    - -

    ◆ predict_proba() [2/2]

    - -
    -
    - - - - - - - -
    torch::Tensor bayesnet::Network::predict_proba (const torch::Tensor & samples)
    -
    - -

    Definition at line 224 of file Network.cc.

    - -
    -
    - -

    ◆ predict_tensor()

    - -
    -
    - - - - - - - - - - - -
    torch::Tensor bayesnet::Network::predict_tensor (const torch::Tensor & samples,
    const bool proba )
    -
    - -

    Definition at line 205 of file Network.cc.

    - -
    -
    - -

    ◆ score()

    - -
    -
    - - - - - - - - - - - -
    double bayesnet::Network::score (const std::vector< std::vector< int > > & tsamples,
    const std::vector< int > & labels )
    -
    - -

    Definition at line 275 of file Network.cc.

    - -
    -
    - -

    ◆ show()

    - -
    -
    - - - - - - - -
    std::vector< std::string > bayesnet::Network::show () const
    -
    - -

    Definition at line 344 of file Network.cc.

    - -
    -
    - -

    ◆ topological_sort()

    - -
    -
    - - - - - - - -
    std::vector< std::string > bayesnet::Network::topological_sort ()
    -
    - -

    Definition at line 387 of file Network.cc.

    - -
    -
    - -

    ◆ version()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::string bayesnet::Network::version ()
    -
    -inline
    -
    - -

    Definition at line 49 of file Network.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/network/Network.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_node-members.html b/docs/manual/classbayesnet_1_1_node-members.html deleted file mode 100644 index e8f9f24..0000000 --- a/docs/manual/classbayesnet_1_1_node-members.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Node Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Node, including all inherited members.

    - - - - - - - - - - - - - - - - - -
    addChild(Node *) (defined in bayesnet::Node)bayesnet::Node
    addParent(Node *) (defined in bayesnet::Node)bayesnet::Node
    clear() (defined in bayesnet::Node)bayesnet::Node
    computeCPT(const torch::Tensor &dataset, const std::vector< std::string > &features, const double laplaceSmoothing, const torch::Tensor &weights) (defined in bayesnet::Node)bayesnet::Node
    getChildren() (defined in bayesnet::Node)bayesnet::Node
    getCPT() (defined in bayesnet::Node)bayesnet::Node
    getFactorValue(std::map< std::string, int > &) (defined in bayesnet::Node)bayesnet::Node
    getName() const (defined in bayesnet::Node)bayesnet::Node
    getNumStates() const (defined in bayesnet::Node)bayesnet::Node
    getParents() (defined in bayesnet::Node)bayesnet::Node
    graph(const std::string &clasName) (defined in bayesnet::Node)bayesnet::Node
    minFill() (defined in bayesnet::Node)bayesnet::Node
    Node(const std::string &) (defined in bayesnet::Node)bayesnet::Nodeexplicit
    removeChild(Node *) (defined in bayesnet::Node)bayesnet::Node
    removeParent(Node *) (defined in bayesnet::Node)bayesnet::Node
    setNumStates(int) (defined in bayesnet::Node)bayesnet::Node
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_node.html b/docs/manual/classbayesnet_1_1_node.html deleted file mode 100644 index 2b9c143..0000000 --- a/docs/manual/classbayesnet_1_1_node.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Node Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::Node Class Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     Node (const std::string &)
     
    void clear ()
     
    void addParent (Node *)
     
    void addChild (Node *)
     
    void removeParent (Node *)
     
    void removeChild (Node *)
     
    std::string getName () const
     
    std::vector< Node * > & getParents ()
     
    std::vector< Node * > & getChildren ()
     
    torch::Tensor & getCPT ()
     
    void computeCPT (const torch::Tensor &dataset, const std::vector< std::string > &features, const double laplaceSmoothing, const torch::Tensor &weights)
     
    int getNumStates () const
     
    void setNumStates (int)
     
    unsigned minFill ()
     
    std::vector< std::string > graph (const std::string &clasName)
     
    float getFactorValue (std::map< std::string, int > &)
     
    -

    Detailed Description

    -
    -

    Definition at line 14 of file Node.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Node()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::Node::Node (const std::string & name)
    -
    -explicit
    -
    - -

    Definition at line 11 of file Node.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ addChild()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::addChild (Node * child)
    -
    - -

    Definition at line 39 of file Node.cc.

    - -
    -
    - -

    ◆ addParent()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::addParent (Node * parent)
    -
    - -

    Definition at line 27 of file Node.cc.

    - -
    -
    - -

    ◆ clear()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::clear ()
    -
    - -

    Definition at line 15 of file Node.cc.

    - -
    -
    - -

    ◆ computeCPT()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    void bayesnet::Node::computeCPT (const torch::Tensor & dataset,
    const std::vector< std::string > & features,
    const double laplaceSmoothing,
    const torch::Tensor & weights )
    -
    - -

    Definition at line 93 of file Node.cc.

    - -
    -
    - -

    ◆ getChildren()

    - -
    -
    - - - - - - - -
    std::vector< Node * > & bayesnet::Node::getChildren ()
    -
    - -

    Definition at line 47 of file Node.cc.

    - -
    -
    - -

    ◆ getCPT()

    - -
    -
    - - - - - - - -
    torch::Tensor & bayesnet::Node::getCPT ()
    -
    - -

    Definition at line 59 of file Node.cc.

    - -
    -
    - -

    ◆ getFactorValue()

    - -
    -
    - - - - - - - -
    float bayesnet::Node::getFactorValue (std::map< std::string, int > & evidence)
    -
    - -

    Definition at line 124 of file Node.cc.

    - -
    -
    - -

    ◆ getName()

    - -
    -
    - - - - - - - -
    std::string bayesnet::Node::getName () const
    -
    - -

    Definition at line 23 of file Node.cc.

    - -
    -
    - -

    ◆ getNumStates()

    - -
    -
    - - - - - - - -
    int bayesnet::Node::getNumStates () const
    -
    - -

    Definition at line 51 of file Node.cc.

    - -
    -
    - -

    ◆ getParents()

    - -
    -
    - - - - - - - -
    std::vector< Node * > & bayesnet::Node::getParents ()
    -
    - -

    Definition at line 43 of file Node.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - - - -
    std::vector< std::string > bayesnet::Node::graph (const std::string & clasName)
    -
    - -

    Definition at line 132 of file Node.cc.

    - -
    -
    - -

    ◆ minFill()

    - -
    -
    - - - - - - - -
    unsigned bayesnet::Node::minFill ()
    -
    - -

    Definition at line 70 of file Node.cc.

    - -
    -
    - -

    ◆ removeChild()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::removeChild (Node * child)
    -
    - -

    Definition at line 35 of file Node.cc.

    - -
    -
    - -

    ◆ removeParent()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::removeParent (Node * parent)
    -
    - -

    Definition at line 31 of file Node.cc.

    - -
    -
    - -

    ◆ setNumStates()

    - -
    -
    - - - - - - - -
    void bayesnet::Node::setNumStates (int numStates)
    -
    - -

    Definition at line 55 of file Node.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/network/Node.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_proposal-members.html b/docs/manual/classbayesnet_1_1_proposal-members.html deleted file mode 100644 index 57aca7a..0000000 --- a/docs/manual/classbayesnet_1_1_proposal-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::Proposal Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::Proposal, including all inherited members.

    - - - - - - - - - - -
    checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
    Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    ~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_proposal.html b/docs/manual/classbayesnet_1_1_proposal.html deleted file mode 100644 index 0003bbe..0000000 --- a/docs/manual/classbayesnet_1_1_proposal.html +++ /dev/null @@ -1,414 +0,0 @@ - - - - - - - -BayesNet: bayesnet::Proposal Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -Inheritance diagram for bayesnet::Proposal:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    - - - - -

    -Public Member Functions

     Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
     
    - - - - - - - - - -

    -Protected Member Functions

    void checkInput (const torch::Tensor &X, const torch::Tensor &y)
     
    torch::Tensor prepareX (torch::Tensor &X)
     
    map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
     
    map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
     
    - - - - - - - -

    -Protected Attributes

    torch::Tensor Xf
     
    torch::Tensor y
     
    map< std::string, mdlp::CPPFImdlp * > discretizers
     
    -

    Detailed Description

    -
    -

    Definition at line 17 of file Proposal.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Proposal()

    - -
    -
    - - - - - - - - - - - - - - - - -
    bayesnet::Proposal::Proposal (torch::Tensor & pDataset,
    std::vector< std::string > & features_,
    std::string & className_ )
    -
    - -

    Definition at line 10 of file Proposal.cc.

    - -
    -
    - -

    ◆ ~Proposal()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::Proposal::~Proposal ()
    -
    -virtual
    -
    - -

    Definition at line 11 of file Proposal.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ checkInput()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void bayesnet::Proposal::checkInput (const torch::Tensor & X,
    const torch::Tensor & y )
    -
    -protected
    -
    - -

    Definition at line 17 of file Proposal.cc.

    - -
    -
    - -

    ◆ fit_local_discretization()

    - -
    -
    - - - - - -
    - - - - - - - -
    map< std::string, std::vector< int > > bayesnet::Proposal::fit_local_discretization (const torch::Tensor & y)
    -
    -protected
    -
    - -

    Definition at line 77 of file Proposal.cc.

    - -
    -
    - -

    ◆ localDiscretizationProposal()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    map< std::string, std::vector< int > > bayesnet::Proposal::localDiscretizationProposal (const map< std::string, std::vector< int > > & states,
    Network & model )
    -
    -protected
    -
    - -

    Definition at line 26 of file Proposal.cc.

    - -
    -
    - -

    ◆ prepareX()

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::Proposal::prepareX (torch::Tensor & X)
    -
    -protected
    -
    - -

    Definition at line 104 of file Proposal.cc.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ discretizers

    - -
    -
    - - - - - -
    - - - - -
    map<std::string, mdlp::CPPFImdlp*> bayesnet::Proposal::discretizers
    -
    -protected
    -
    - -

    Definition at line 28 of file Proposal.h.

    - -
    -
    - -

    ◆ Xf

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Proposal::Xf
    -
    -protected
    -
    - -

    Definition at line 26 of file Proposal.h.

    - -
    -
    - -

    ◆ y

    - -
    -
    - - - - - -
    - - - - -
    torch::Tensor bayesnet::Proposal::y
    -
    -protected
    -
    - -

    Definition at line 27 of file Proposal.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/Proposal.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map deleted file mode 100644 index 36e081a..0000000 --- a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 deleted file mode 100644 index 5104bf9..0000000 --- a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ebc49cb39da6e0edf6f34e086690a717 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_proposal__inherit__graph.png b/docs/manual/classbayesnet_1_1_proposal__inherit__graph.png deleted file mode 100644 index 58d8a633ca34b28e7ea352f0a9ccc7f4c85677b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11225 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 g@Bew}McmP>_CBa?W-(0wT3v{wn4D - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::SPODE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::SPODE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPODE)bayesnet::SPODEprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="SPODE") const override (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    SPODE(int root) (defined in bayesnet::SPODE)bayesnet::SPODEexplicit
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~SPODE()=default (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e.html deleted file mode 100644 index aa7f1e4..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - -BayesNet: bayesnet::SPODE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::SPODE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::SPODE:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::SPODE:
    -
    -
    Collaboration graph
    - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     SPODE (int root)
     
    std::vector< std::string > graph (const std::string &name="SPODE") const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 12 of file SPODE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ SPODE()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::SPODE::SPODE (int root)
    -
    -explicit
    -
    - -

    Definition at line 11 of file SPODE.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::SPODE::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 13 of file SPODE.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::SPODE::graph (const std::string & name = "SPODE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 26 of file SPODE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map deleted file mode 100644 index 136e08b..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 deleted file mode 100644 index 3e45214..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a7ba010489f508859de8b2a34852703b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e__coll__graph.png deleted file mode 100644 index 72bb1578a70a11e5d9b17cfe9ac7230449d2ea2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11682 zcmch7byU>f+wF($Zj=)9yxl0!e!!UEsbDr2|?;WM9twKV`NQfW^iJGe79R$J9g2!L+ap7x5 z2}VDB!?n^-QA94#|FT;O6A^?JQB#!DdzAirCcu>X;9O>V!rrox(2GKM=yQdxT60dy zEmpy#(cxEl>+8js_rBigF*l&K{qfJpPltkQTh|g3ql${wbGz76i}1}7USv`$eQfA< zZTxLJ+a?nu#adCpMV$O+Z)bkT!_Ho2@4UCaHT`cdKN2H=qPPB!FXMrcP4@4`erhWU z8NINgFD7IA95p{bU-QgCLPSKQhHcWeFHt_Hfq|NOUt`7ZwJ)EdVrV$|oUqxwm^TrT z=a?2M3N?Kv(#0{64>40r{mg0yOUS9IM+Xo1?dlpD8gR{31~R1)R$<|>BY!zLj2{D8 zal^yIxc44wYm=gX*xmI)+7C7+C>R)`*47--CH*M54a;0!9*78+dd}g6;1JQy7nirb z7rB^nZ~NjqCmcIvDtPlIT&i3(A6Bb3@s@;QwaO2XliK+w+%dz+Roqc^u zX(Fx`&d$+9bT?QvHPa+RAgSK@==3aXU+2trtH>9sRDKo8Q<#zX(Bu7)cCD zjcti*@k*PUFGod1z2qQ3$eEd6goR;C9%uxZI+rCL z64%w$At5z2LcQr?R4oC2P~R%8oloQP>INu~?(S|~0|UFN!-BHf-zQQ5ho66aug;m+ z*f2emE3L+)U=tRu9TzOBs;a`3ut1n~9ey78hebqu`t%8_zrR04)RP?|hOlyS;?6Yr zM#RODNlHq_nE&cZymp11Jy-n_llX)7KXZ@C5LI>c4(m9nXD^r}I>yFm;^X5{OzvF? zSJx(MxdQ_O=hxSxmcGVeHF$qmUR#UgYdfWMb93|X@%d6=`AOHv$f2rFI_Q{HP>^as za*z1@p!_igVo+lAgyM=a{YF#32Tt(}QZkv-3eOL9t!Y0)i^LNX6VYer@>H5iQTV%Cdmcyt;|9`%Splu3d8wV#LP9UF=Tcj*N_KU(I^_!oBq`?iH06CDnZO zZZl6~V@c{3@Bfkd^Bjh(R#5E!NShX-LtH#88jj0zwgj|aejh?BqUIZii%nc z{X^-gL>90HMkqZBomyD=stQRy0W}H2npKN(-X~p-IH(eh; zKB1(da{T&&X?bx`-njI2WTcgqRp-!9yt;-)(Ytq%;t$qjw_5%%)6mh~b#mhJ`8}Bg zWujtOX3A!7Z{IyIaIMrpqvthm-p5cpDvF^bZbN(|{MoYv<-8n7_1*35YzPI)CQVWC z_f-A0Bz4h~0m$@7DSo`%E@6GO`aI3r}~XY7b`g zSTx5Py;rsGT&G648l*w$VaodX`Ta3f399qHeVc-U;_uPXV5U?+WTe9qDpts0FkAfO z&h4d_YznIRcWyg6I<_3%sx{Uk`KwC;-`>1=bMQW2c=JS2@%8K1Zw-q75f@MW_51hw z@xg|oqL4L;n2?ODe6PAKAfqRluh8<-GYX0!SgPW~hYzXA$z>H4+s==<#l*zowF~oL zF;%s-`9UX#6co4p{l(Fdfs)sEeXOpo&MqM#!Orf#QChz?q{5P4Q&Zy~R7P{dtXb8m zR{X<9dBLk!zld)2-I{xgfrb0>qeZqx@{M>7wO4Q6s5#Z9PS!fB+`fHV&)8V~#fujx z5;_VBIYIk=4)$C~zxd)}?v<65c;!5{SY?H1THf5-dCEguZ5P@G1_m`&UkE?=Y|yGD zDB9ZED(<&26)q}pu&44{Vz%t{OK?s#pD2`QC^<-9obK%(PPvbmxVI?rHE&}!HZ_e* zH+n}!Y99V8>I^hAO0es$sx76Kbnp&p|(~y>GkV7HZ~l*Min6?rKLp`6)z3SOx1F7augN! z*9)@}l9LUSjA?m|(JgK4uyA?V1_npot=UJRmoHylgETwXG!LJY-+Pjt>HF&&#r>v- z!rCW)|FTI)Tp|p|lsVnTYHn^OCnpbqtn29Lz(g#ptwYrkIW1TFGX^&fzO@A0D$vOy zMO4+)o+#(Zm7BE;wgmV-*qUWBsdoz}$DH}#^J&8TaV(R>!}gI8s^H*YQIC1qB!4a$ zmyhG)w8o|5Hfevj*x4~zg7zt-&yTDF&kiO;gHJ`rOYVj4?>|Tkx;2J(*XQ`?DEsYO z?6%WgjauXLler74_2K+6RR89`gEnfP_UGqVPl-rc>iCB(L!)Xtk{8TUPM3|}S@eqs z1qCfEEIheesLgic2I+wG3D5EVdMI?TrOx;(_yhzP9;-KELqbBhwhnf8J6Il{TBesZ z%Ot&eH9!9`lw4kNFj~7-dZqL7y?gft*B|I|B_Sc+tNjZ(5zO*;?odL-$G?1u$jHbb zA@%k3J3%9bIw}qh*E0h)#lB5WGG>)5Z*G#((a}vecz$Y#udb@nH8qWqIX}Wuh#>v) z>YuwWGcsa*HpUn7lg&EThVo*68!&Gb<5S#qmA+0R;i9ficvDc&`FB&1bjtgYnHeTh zQc{Q@@{Ht?f$a>;UPV||ZN~7Zy~X<%Fqg#Zy@Tph6x_WVYY&6kV9!SotQSz=R)g7c z9-f|!g+9;1!q7v2j?e6K`xC64UuweuI@DnyDsENO<&b zTL1pI)SGsTOh@W~8cN4^E-2W7?kN{;*g%#{93+ip_p5(YwY0*ks|8^~AV`z%ma@9~ z^PNw`#Kd9HnrV5ALL5g57-Y5!GyMsnzeGNNj!ChAioFB}@bU2XRD4QGBqaC}JoNDP zR!~({Ej6^|798V5t|zH4Ws4zbs4*9O;#xX_pd$vU@wTvV2{w=->34Io-aU>@;aSSB ze}`#ymKmDMS6FDJ^Tds{2jVcNUA|Z00L1tg_Bl8)+h~~h?b0veP5^_#{5zn6!J@m@ zV4kjKPB2hXJ}qxOCOkhsuc)f(h@`ku;kl$Nx!ZXK6&hcd70ih4P_RzC`F@%sNEeE` z1)4>bH#9UfM8(7``_skNhVzL40T`~}#Jae; zI!@KODn76;d8-n~jC#nWV;JLTaP9~v9m^p2EcoKgcj;#BffO1*NRR3la;VkVbWuX< zy~@qaT~$}d>Fet|+2~!kbC&e=Kl>C)Nb6u_Gg|*(Y!oGAGS#Z1=c8HO@po^v3jm{N zf#asQFeAx56O$1YmLNq%bgQ&+cGiF%8k}@cVpRE*hnKf&YAWqA6O-fNukWa6#iT!l z&jtD*Py{xXmU2)a))`sO;kZrYdiRWtjbkOIYn>iLCH|-_TM(DhS@&`*|{+yvq?9I%WGo*u3y}Z1b6{BjMUJVMVpq~=;e9G*%OflKy z>mFJjS4*rVEY$b$BzSKy+i+m(OYEgv{Jxu}&AZ*)^tas7O>Ozd*B;He&oXz8?FB5X zt{VO>3ql!V&HhQd6)bf5zhLusKAM7JVvPbD7A0M(8XCnrTlcHS^LP9HB0g24I?$BDc2Aw><5$;a>GkYkEM8>E))bx^o@w`)NCd1*I*t= zJn<*M$3ln@azyPZXTSFT++7vHUgFECTHi|O{mtbbC2zJ`T+7CiV}Ig<9r(fal|v`d zl@fxR~In4h{B~Yv#}yB$s9a0lFFuTy~jpNQ$KxYTQ!S_@U}(bJ*a$JKaI70<=|jj`y2W8Tx*Fe zzMeJEJAkS#`0aIM8wcB|$-j)_=~aqzcI;rHyF-TzGIvf;CGoy5JJymLOxtR|W7beC@dt+tl-a%x|DTP7_7whQu}*>yN0k0dmlIg5vs_VlXbRTpAf zF4@!7e&P1_U23wg?>6>L?COn+!)B;Bw!5+nySFr{h%t{a+AUjfNF$0IvSU^%m8;4w z7@BTsoSET!;YH!F4qj-Fbs_UxIbE&B_o7`EAT^?R^FC`492w)UVbCMLHeF)79#Upr znHLSAC+&ajT0G|$AZH~L@>O*(l5XJeB%ONSkbP%WEuyp9i)Z?}Zw4<@gq@(3WBXT1 zIa!MV1(B2wqDE_m5s|yO@{)KR0!V}%N;hQMrwY#<-sS69hIl?b7 zbTLQ1j~Oq|F4tp+!b$Ejb&CF)^F5}7jKUCyzq*>HK#%!T3@OcI2fHSwhn`#{fsAaZ z4Nsz!1*)BT^lr{e<*+OUkILN*KF))Z2Q`5GZ1|C^8& zj*7>xpFdqezcxgn8Yh~R=2@=%DNQ>W<~J5*1)a|ORK+usW_0QG*hQ|(Wub3SIo~^! zA_x^M+04kpW)#1D{rFwTHSjbnI{(g}#MbQJPL0l%1)dIdm_s=oy1HQ(q3t)=e-TNj zUV-JD4WQqtXj&XsR)R?5(^s#FPnt`EE?09E!gDGRLDmW)%mDkMHMK@(D__jJMWamY z?K8vjgqcbFtV)}yDUN{$%}H;XLwPPURVv|YVs7`MZZB3$3)dQ?op3g;Fz&&4>z_V z7MAZ=UGKuDh$$E(!4|HrXNQ37G%n?p{Rq<;Fv(fdwY+})GY@&4Mp%ZWfROfPs_~`J zYzE{P4=?d2#=rR9*W=gisjgE$7m<(jgL}bvtiGOiN6vS3bfi}Arr^w*czB3>*nS(F z#Z}US*RM|Rusgt4Jm%B`T);O2O%_p)c5zNl)cNL0r0QicueTa2w%iilKVmYXd_*ZI z?B%3(*8QASI6AB=UWeRMOlkIu`Nr+5Ryq@ZMWvaShbI9;5z`32Ju|YET%I0j#%))} z-x+9cZ#TqX6%jdf441FO@jV}J6bvbcyT2J335oD$6iPZz_j)VlJRvKEtVoCkpnsyJ zrKJCJ!m_pU`0+3=5qzVdRT${LPl**qzJ-T}w+crPgvcs7M-Ve4z$ZPR57Exi zm2`4+6vL6V^YGXXM(E)#&5O)orT|lNh#hhY6r3%rjt8HZc$#n?6M=WIM~oLJGsl zr^3lkkbS-4vBXGKATL>wv-7|WHl!aSGXkk96MV|nV)i&BvOq|$louz0vsfE{Qj~E| z)q;c|kg6beb>&8p*mueK2liE?#TaX9gH+X2XBQ6dd;pkbvE|;v`1L$Gx+!hNXrwB3`Eyd_C@;N3cf1&&Ml~IwcI3bY9&hnA`Y@ZDQoNA4292iEf8Q!{8Kfw5Y z{Pk0JF{|1ul$HWVcp-+W^A{pEfxH{X(Lc;L*|w5pfWG0eg@U@mbb%EkDYrnqNanqeIUo#pk76=Y2H4 zOJvD)%&Mt0%tO<{;maE%FwPUk^7e}*S3-yNnr)-ABXQa(RiMbeMmnD_lcscF4@DE- zrLU1+kXg=-)QZskTa6ozsvE~y>uxWposb;!2PYX>PP6Ks4pk?0jx|Tv?Nj7OH%*mb zi-l}1yE@wx950XtgZHDcnE@;DUeK<0=jZUP$TU-)(_$LoT5J{!EowAw`00xLy>>*; zp~MriVXHoq(pZQ~(|w;Rkt~8UAlr`V?X9r(YaIOUd)F(CH~lv!Af6wHC@Wdxtt<_1 za{gM)QSzGjy!<7ni@BkK{`fH~4_(+_STx^q*{a!@Ul;?~d{x;rr;T=1xiSog(?^<# zQXXl_Q93x=xCAA{cZVb!HyZ87SL*SP>SJfUh#~SNAN#~r%P;&`uFd6sqPISP=20GA z6xl&KJoWELcks~kUF=1A$N%>*^PT-oQ`q{?AmcecOnLqm0#-I%t9PhB_jcAf;J(M} zCem@q?J@6h2a#Bcjj(nNawE#JT-C-6jF9qU&cEE)MZBdoT3ns?Mqo3HW2oC!QW(_) zMwbh6|16i--oFq$qn3?9wEtmx{^(oC7}4BxzYRq}t_QNAYSH!M_F^c?>;f?MS=47X zwzZmk>xHm4o*!*v?_)Vk zJuVXIGiJ)ORH%Jg2~lc_j}m?xg%zsbYT6CPqNe!{H_>g+Ww^!5WS8 zc?ZXe4J+YF+}QI{$<6J?Y|x+ka1X|P^5jX1pgrlGyLV&D>8PnK&QJed=jC;Md9b>? z{I4JQ+V*;sC(6xLfFH}v%k$h_Rx2@Wtdbk=VI%{9^(sF8NvTPF_kC2*-oMp|Kf7IB zU29YIe2Ys<0>O}S>7o>EXNQ*pgMvI4I&hE><-CvY^^0S24zrVzldlK}P$Y0*AV3=f z0Tcq)Txy^#8y>9R2`xz$ct}@k%oMbOq?ZBzJ zs<~P6COz@kk4wb3$3Q_l1!b9)7XstvU;n)|DBwYr zk?Qu~7nAO@%c&G**&>kHs? zfiLU?=G&m$ObgV9x4PFI)&_I*bagGN`es`K63L$eUFisYpPWn;ai7(^apT5=?fH-XL7O0v>07xuU}nRny1Tk^(5I4|OsAx* zOi6LOE%?mgTfkTaG+?O%m!>p zaoxC4FgmLD6EqRXq8DYRjqFiUx{~CcJ{=e z@^_w{FWKJSDLPV3tPJqv%XyQKV3q#oN1FR^2nJTC1^*yuUaAQkOUWg`%TWWzoS&Z$ zN8>>JJ~9$NRm_`{f&wV+SkwFW|Ka0{14+nHh|##lfg+Ys_&J&h0t}f;!)-7KyMnjj z;^r=^xXLF{~XTt!W4OVyy%@zYEjwdN4 z1yoA}79Ocy(bt)onIm^dQDFTNT~m9$e#N_b_3F_|vibX#!?}xdIuHVIZjVU{{O6K2 zf{tg44f(upVL4-;zRIJ8JrjXOrJhfTcx+CKNkVReBqk4Sgp!hSesvWO**-iJX?2Ii z;ggVj@g9)EgHOZ8!NF*t@`sFT@LYPf6P=Ni6u!7KjZIZU&7!u3e{_(~x>q$Q& z9gAa~u7AtyBb|BR+t3uJ=9`;1MMXs(4<9}QT@SH<7y%(KfP2rvg4M;vrNZJPre>N* zAN@l#f4jT8OHM-~~*Q@I53;Q!967LkfWe~K}_45;3Kk#R~X@d{s zcYIr$j9);&2nbAW4KXy}8qh#{0g7XG^ke=~P-ta{C(S-uB1v?mq-Z&ubVjp~K!#pn z&sB=1y&cCa74v&qidT)2_g+;P5T#w+-Or&jbwLh2I>>tWGo_%&H9j@f*g5Ox$lM1s z>Df{@mHV^98r@E`9SlI^QU=Xy?1y>N!_w~Ln^ICUk4^@EjupeGY(O1ym4(bT`&D-b zswJ$+T>K@=kO~<86(Hm6oERCiVE1Bp_>TDFbIJQH{%qq+Z;D#eq7@P= z)i;4?j89Hhxu%_-t-|aVcDOk+mAzp_#*8j20WG@+ODK}w3<nm@Yl>-LyiQ!56hkpOL3^+@2K4!s9gevy;JH_?uN*iPYee(fgxA_oyy z=%5B(pp+;Ap24>KnRSs~XQULW5GqX9=#r8&YE#>9Zl6!uhEZ^1Iv61fQ zeorlC>Uc9>SMrQM_i(7PQ>ywbh?H;-P=zRlt=~-gY|H@fQ$o(q6!Ks~QUhTV99`zn z(Jv8R7_{j_^_+Au5XMl4D3S1SQ`W`VUP^1nl=}j~RY;k(zuFZth_5A>vfZO%aU`H}8Yq zGXLWTr!T{<*Y3+E%9Ui8HZV9N+s2E*O|7QoweDP|j?8Ap5 zfXjBKy$8DPtLJH`s>)hfu>;asSX#m|H#dKWK#Sk$0`)fm=8hSz3&K`4$9nsd-hMxYczTP*fZqv-(7BEbBM#fCg z!5d*7>0uWf08ME8*x1wH4#F#Hr6+l#rykIGwaWh6sUEGfhEjs^h8F_5ZfMFFe1&58JdUZuVj?>!XFM+ z+v~V|tH3~yW$<7i2uNo1l8-7XOE)IUt-n{q<2&deqGmZ;JM_D0%f=RPI-TIh0z*>N z-s(V}PL_0S9Rs+!z#4!hXxAG8h8F}B`|9p^hZRRQ?99MjwO?~>Ea)53P#zu_Af7?( z7+kU*br1rh6$Y}ryga|X@M&$jQ4oAZ9*ds|jEs$QL4X!^Gvwprds|SDI(-P&6w#pL z2T6Wt2^CQM``*3nZCObCjpOTYdV$f67qCXPgM2$XJG=eoj|%wQV6H^~WN&C{Qpg)( z1!M*j7ZxrHhAK1+H2v^^0Irs3dbLwSiBlu_(bIt_qrv~90KyEB9>dUP_0e0HA1-_G5VC;5r{)1l&VWFPNe$t-t0rG|MSkJEy_%2w{Pf>^wNCA$gVo=v~M<>7QV+*sln)hDp1fcQ+b;#4pxG=XLT zoW{5U&;PDgR90dj-=?OnaByHd)iOd)L=6h%J5Q8>IpbeA|8fSVZ`u3RA3v;im%D0P z&C4g2_SZ-BZ%9`Dh;KO;cY$3prurJ~c*FI&Hq z0uLd)VdRS!%CfQ{0=@o+zoMYIqI;HN7}_#;@N*1&3bJ6?LYq}!%7CwIzVa(`@g8+u znaC4~!hTS_Q7d=v+=(flk(vP;0Px+oO%H!R{b<4O77FkSXcu&inN9V5{D=W9<1@7U zIPi2Wjh#R)qVEcElDqhD&#*Ra1^WxYI&ceoLPr8jNbqTBr=)t5l9Ezqe}CDbb^i>8 zCUfB1@9GU7J}mC8^oRx?@k5pIgX4ynNt{|9A9R7m()!t_Nl7%!!AF+Rk%{LXUr3=% zeUOSU&)C5j0*1b-$`;5=$YrzkI@hU+fIn{3w6yH3tO%?zOg<+>J-?$PoM-`zfDjOL zKNZfLHL!cHg`kraZNr1>8VxHc1Xwc!Q?ucD$NBs5eZ z=`YY66=0q+i|HH~P=T?`78YV$iuzt{k9K4lI+uf=6nde@g9l;N)zzNT6l`E-gd1Uo zxX;av*@4MPY>Vdb^-Ut~+IS8EAbnt3LEo#sXL;|g30wvSoocuD_e&lU-LY;8IuQW_ zBTC23-3AV(8yq5IqH|+owUb_OCq?%$7_FsC4`~eBw>ZQ2Gk4R9>qId2%K5pe31OR` zW@gSZof?};p{}QWB})931hfo_(YXhu3k3GFtgNi*75;IK?Rd^&{X*@G3b6S#_E?mt zE&Q*b63RBktQ>vETe%V1^|qnGXp_?TDgZIfyrI!!Y>)q8X8zAdc1IV}H0R&m22m@4 Q=^9Z}(pD^!w|M&B01A?t?*IS* diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map deleted file mode 100644 index 94db074..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 deleted file mode 100644 index 7d139bf..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -660b58c59a98cc1f67bff80bae3c1de8 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e__inherit__graph.png deleted file mode 100644 index 16e3eb5eb3b372deb9cf3a0ae06ecb53c5792323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10920 zcmch7cQ_UP+y6mENJv72Lz1k>$Q~zqCCMI14B>vEM3mO0 zthQ>QaP@ijG5hHOE%Fg@v56Ox8F!E7UC>-woSPTgQ%YEMmf5 z<+y%B?dv_o7!GUsj-`W;1!6LC%4`1Utu+t#`Q&7;uBBIh7U$;`LlG_9#Q*V?;&4#h z(a}LAkHT6s4>tA;n5!z6l$3mtGNe6OOGbukPwQqnJ^DPco-s2U5#?$ybi0FYu`9)D z)rTsln}?UTR-cPzn4hZsfmRH)q>-fArPsJgWS1ySWk@j(^a!5~>IMY`g@%VqD=9_X zKlWfSuh1zpY%qA4l9k0|_Uk<#L;pKIKEA{4maDOGaRG~qW=e_NSiQZyRJ>-yi1hmU zTXqd+{H~khmy?vt_Rj865UvlG;rO16O)9QiMYUCf!?> zPx$8RyF0F5zaAPLEg-{Xwy?1g84(d-U{f$)xzj64pOKS;*Kjhi#Sr)1{^-w(OSrf* z{i@=87HLOEM~OTy2vyR=B1=oT+4ZVO8_tjKeXFZ;fIma{spqxI(t8Jf{mLJ=*E2X6 zoSaMx$3aMFXi$7EFW*_tik8YyOHWU4WIox5+uPgQj))*$Eh;QzcXV)IL}nfzd*&Au zthovYNlEGyeI0TU{yjLT{_54Mg#C?;4d;`;HgyO6<_|Pp&|@M9H4s z-Y$bgDkv&4RqLrlMMcfe&!g4`ix(%V-l+8QnL5&-7wHColgRLU($0Mt1Wi5qu#0G}zi^+rnetzP%JF6EKI4HaYsU zfbh%AM6$*!C?yM$85kIB|M?^3hTUxU25Nn4w7pKA39XF^tWHMRJ~ zsZ)YMv3_kZov^E4sPo`KB_=?rdy9#x$%197eEZc~D*}j5`T71jMZsF^cnH03?qu-V zGPbsyUu`GC*4M2M4-XLt5fPEY6Ar_A+L@UdOa!3R#9bEF*NGt!-@bjj9Z;N~FZJZf zHQTBBNGP@EBcESF5vg~m>7MEuBoZH742jf6_OY2fuEHe z%SUtNxrqrDB7sw1%F&SrDn592_WAJGm^5bs4kC(PJPK}COwVbt^EF(4@RggS)YRYc zw^wr0WNd6W$jQkiP^@?FO3KL*05D;&9uRiC+6iApMTOw<<(b^q#P>C>AzGi`r=g)a z+~@`@FR4FP*y2GzW@df+M!T@E0AXqS=e8oZ*P%V+FwMWNy&qET{{8#I9(`)$eh zD~UHGIXSswVj=~JM4CfenqOU207O8cDCp>v5zDIs1wt;@$jLiKN8igt(mZ-zmZ({* zCvRh8^Rd^Qm76=Ju&}UWXea?dtJ=^Y6 zJ%~dgb)vqQme|fN2Km3`YcYIJ{wVg~-#qw2p zdV15BFF#lvL^PIGI`H^6`gamw6Y($+c$UQO?(X7$z8YN3rSH#9{zl;qYhF#wDD4@6 ziucKccrTS@Z{PDxgFq=}^7!|)At5RnG&YAVZeQw`IFe49ier@{{BArXxz{-n(zAad z8le=enH_t_Zw=VJ+3lNbX1DS2ICQwzw(Vp%tSX+CTe8n`$(blF`oH12(G=%o01LgA4(m2UcK~596DJyqeW%zmWn?xk+LM3Uf z*MnzQu&h@y8vU(JbvTfW{yI||NU2)Q@Q&B(E5?nS91+WHPfR&jSOpuWm&D0>@)x<+ z!#$FB#PjAE+qybrOtT-Et1{vtNMdv>n$BkjLp%SXbEQxcxBPN9wd?jPeJ`d&*G67h zCgG#=pEx@Y+!Y$#eb;$rlt3B5P|Cpjf5XJy@&D@qs{Md^US8gpq`jUdgI+xgmC>|U z5R;TIZZB@W;GPlO45)TmI=3$LlsWS##&YOj6P@k&)i?V zn)|cx6M@K9e-kZs9D4PASw%$!BJ4hL^@Dkd#9zRCFhq$dV6Cvi*z2T=e-q-%EBe0R0EDiMwXqO9jnKA z2e=5($V`{DK{B#lXxDdviIrq&7FZl^&p?Mmp->MWKAhj!PzK;!Utc%>`Htf>puuL0 zpGMU4!N}-nA5eki&Lm#oWOMCTK9`kcOw_u?)zyiM7Jy8;UJBv&Q7wH0-qJ~BM4rlLYZC+hhY*r;5#I$S{B zliZHM!FM`3I-lSr_4M^uiYg~Fb8=YNI5~65Owj7k*(a(T0@gP+@`{V2G}x|hj8=qW zV`GOd+s0t2xw{MAjaT^5)x`qc?RYkvi+GTE)l)`AQ8DXa@>R*$!oNtP*Vgg)O;c}l zX72s{2a{28!T+5$qEL9~$zBs9BL;|)==e)h1ki@ok}=?-AdeoudL?|Ff+9w)m(B&YVSRlmtMMbx>)#ZWn0{>LnUHp}`HdGQ9 zAAh~>WV3e9_u|0!MM$v4Ki`>clT%Rem&s~^E?nky1=N=0X@~X zv>-pf=lAcxu}V9W#m*$Huh!HcHpp(=2zh4Uf!i&zOKkXz`S_sQRW_Y?VErB(YIt~< zfe$dq>{nkk2R}b$QBje;j|4HMpfR%4;hX6F#bM>|>n}|sWm>wm4QiY(fB*g+^TdF4 z#&&jBtMy0_fB{CJ6xkx@=b z2?a^s+}v!x)I}%w@F62Jb6}bePpg_Tf;7C%+}wP+QrvBmw*Gjvz%~Ki4%xM90iv(| zGCX`p4cEgKPl$i@R_kjV{B6Kk=aGgC6Jv9wGderNc22poYMEQ$5CjDV#)O9xLA{4X zL@HpV19E`1;fA0e$hC(xMY9+%!5RRMMbe7ocC9srqn=MncCPWXURk& z%e0j4JuChQvcAv!0Rw`f5;m+KV&;h4ah0bWbxA1pU9w>X{8D#n zj!u5LLBT*D@GVv@u99x2{$opWGWx1|bI|pQ37n6iYm|8Qx6@XYWL@V4qPV?3<#Zk@f5=;*7E zfWId2ctb^EUYZ71-@uSEOt(**rx~G0({1DqrsC_MMW@`(%x*6{NZf{fq++9(I4$^ zO&GXvNzJX&oTJpM@x+6mRFR13)x-E?6s;{zX^)fhSR1X3mr!&8&2U#>WJ+wLQmgT0 zK`Nm~F?d=J?CC^lwPGS8TL`1}(1{2lY)xWQ#j7~37RD$mpY-01jjEv3=zH2)jow>N zXirp`BLm?H84pWmJOLTg5o)tr5xj8wr9kERI_V$et)Vw|8;}MC8RHkNT zf5wtUUr~Zg1P=nfzyfN*r}y#$>uz^U=YV z*5UcdR%}{YG!RfMzb+m!$s*0H{CtHaL6M!-YeES)6FZP83fWTL-lA;x?mY(gghTi1 zHsj{>+FE#;&+%n|Zm*cFh0V<*w_rB-|V7#bMK^zXbU z1VltFZ?4@TrKAkD=+DXcx3vwX)eJmcVBn?G^Mi&EU?`y0fmd)l%%Z+jRLsmpi?x+!351iAO= z)2Bu>y>A4x2;)EV-#x7$V%On!tv}-L&1`I3K|q1@KQwVOSQI2t6+2?CKl`gYzqDj> zdbqQ_w}*-Q;KKW-c^Xm~RVS%ef}~zUl43!_^oNeyl`2Z4sHhl0`|$JF+$!7vctHVZ z1I~oG)1zIXwethtiyM)VkwR;FdV1V8qhC^Q{lMZ|_9sT{E_H`gRPaGfU~cjB)GIJJ z7|F&)2%S=mEgs{FWoO@JV`Jk6MbwH$XQihjCMPF5e*J2LD`cb$-zo7uBch4KYiep@ zKx*mgwsd!2_3-eB`MIE$ry=OHNDLRcv)8Y>CgOtA*c?Q}7%RsOu8+IBdpbz38(apz zb<1mWfzH^8{hr_m2@am!LDS2+y7Ctr)M2VaOIzEx$sadS^c8=@#KDwrG$zmpBV%JM z0Re$RtukyxPhTH4lv!PZu4RSJ(s89QlT5^P$p>Kw4@j-G!kbE5e}td{#zsbrhf9r5 z{{VD2%rwI&B_#X?7m}Cv8ZFv*z9aTj@^nI0mNo%HI#p; z_laxDSp?O6Y`7V%YRB8YEUqptkF>O?0PdRYhK_2q*(s&7dZ`LWp22m16J_t<(1by= zrPNm>kbsAaAMCal5)7Y%%T6Wa%<5Mwu5oal?qcugCnJUOq$q~*RJxp50L8NS~o6V zmUllF5Qv*MZ$dasmby|-NAkc(F$L*J5ia^meu6TgaVP7!u11-}f;sjR9hsx+@Zm%-aM zGBF9be2r!AaBu91^7LlE4*+t5H|Pc5vAUnoi<-844uqllvg+zm#PO1nl42CHp|aKn z9Lmeenx3eN29-3N)4-JEv{3%hBiz~9S#H~LL8VlYq^WxFi(On?K$1T)HfEgkKG4UI zbXHcmTw4HjVCA)5`!6)j7>H|lG4mQsiehRI3d{X;2Ynv~DUei;*_ zI^XjV8Ty{_%{x8>&Afd$7d;1+b2vwT(J=&Uol3J%>os(!IiRe-!2JM$Q$1JjVx&@b zHX{Itt*x!Ot!+CI*SDUHCr&SeEwLNFSoC8YRr3clhbJc(Q=-a!2MJL{NW9c$i=T~u zX3zxVmr~aa9YH}si9C(xklmOT;<=t(-qWLofp+jb4%f@OVQ7cJHt2>R?w3VsX@y;h z(NT0b2thETp~1j-h8?U_XUm+A9~o}n&i+|{{wJZqxtjQXF4hrI?D@B5FdhQ{B(1HT zr(z7AJi$p)YHyhS1a2fq^(F^e9v&VDb;$nOkXzmmjOfC`2!}^Un|zY#Qi`Knl(#hNc(+y;F;K0aQfgue0x*oX0H zkeu)E$cRhrWN&ZTPuE|+egV8nczV`Mt~Ev_g}id0MH?3H#n-==m@*s*M8X2iJ ztQ*(;IWVwaza}DwH^JxVi?O_6vP3{g=pP*&4cxoas3$e{1aoD>-#p5z$Ba7VNP&AB z|9h4ih*d394;GTdday_66}cGvS*I&__sAzwt}cGDd25d>w zkzm~av_bu9ee0XBE`2j!biEXbq2Kp%JG6`1Z0t|JON~vERCcE=uyu|mN|f<_e)H)v z87;m|?o%B_vgZHb*$f{DWVJGGYdPz@kj$Lo0_5&0sgt3}hl9P0lE)@N~=3cx4fW6UnVztqrQYU09>s*1;!~&0mUxq_s-4-3UscK|90U2$N6y1FV?S9QX)Ay zNnpx?Q)g9vvRY6Q^Y(3EO^pyt&W+Dck1$Ql_XOxwx*F@@3te4Z4C8!~qXd@LlP3YH z;%5|qeo&(UATYrV*q)D5{WJFMXz_!&rR8h_u)#Ml9KCdD`FwMA(%bcKm+)3&R~HF@ zRU;Tl5g6>Xj39q=iRcFBx`VC>%{H$i21n=S@I5PKmi|54x4SUB*f(@P+aJ0QBj`fC zYH|Qpm_IhAioQCu5rd(eUcDFfyLazOzkF#e(yb(=rH$aT8r&WmuX4cY&s9aoGRcyX zlKR~+^df`q>AslsvJ{*~pIYFi6ciMVeSPG#=$XBhegYDbb{Ldq3|PAS^?(JC^Ym_eSPZc>T1n| zN`@NvXd5mQB%suP1Iu~g4er`Ry|?bx8BAXX1_%GvEMf-k92`YM-e86H0+nE#v z3E>=tLIYQ4O!x`DS}?3gAl$f|K*j6;8*BOg{W2^dz*LeF zW`V?mz~y;>p6mbxnA`0Z$47hv;}F8I2o|mq%G}1L4dC7-ss*CrFx`k1fM#Q0Kmb5j zd7toe>Q(sxdd|RPJphI59pMxaq2)E}Y=jy4{@|b8-4={8nYuWe!aEqb0hE-pbS zDRgF?iLd+m)UyUQiOMfk!@3A9I-{_V7{rpKfx#``Uoen1vmX0;1r!IS7s41jdVE|D z%sQrjc~^*-)KrWoC~~r14z$*NvwEr2ycY>wMh|Q?_!zFVqbDRHf_ZiL&jc>%3^gM# zbB96rOesR=?@E3c055;KW_ZyIXLA7N6~M=3@Qna&85~Wcg&*+<1elS5fq~mD!dy-uoUt_y55+@eRrwga^6>HQ%?Sr-?+^Fy@w z><7F0l^vfPqp#ZG;DNP3Y(Zse)i~en>+4I0O&cJeNVsmy9l37MfB_H6hLnbe5GL}# zSr8KH>g1FhI+sAdy?sjo>bOw1k_2@L9AkJPj0cDc1oL}+tnw;h5H@TCc|~FnsPyaC z;F1z9u)P87j7rVi7Jq#RxpI?#S>IHviL>*mS?Jy~xhTH=9`J%`LL;dZY zohEoJU4!kY+!`bu81Ib^dX=JJEG+9?xT3*X0FPg2P3U6V+3V@kr__Zw^Jlt! z&v}DM=)$hw(`-bebI~VB&3@fFh{pfAiGb0xa?DZ+3WS)g0H9M!?;pGoUj~a5NWTmm z)juG>;q=gf_Mzi}vfHCak031)1syWGe4sWEs;a8ALe2#AUfWm@J`iV-8)KCwphHew zF&5$hPZBX({12mF^+1XPU=1lNS}d$`(v!%pZl4l>CICEzo4&{WY1>dEEdvAB8z&fG zb7^g2&|^MUR!v*`&ETM>Ty`I433}()Idal!8s4s?e!@Nak0KCs69J6IXS3~ zx}UfZq4)G@n;{a>2%A3`G@V~ud=9HX7)4emFqt_r*ESK_v|w$jSV z5Is(O1g*FaEkwer3M^wBcydT1a0dRlIt|-kk)xwJ%*@Pwp=#ik#>9{^v#=mx_6C}$ z%4vxNmIX-3$@}K|?Ns@&B-kl;xd^eQf!ZBHZ>-V(yT9L7YTQz4(a&;@UsYE}hfxyN z*4Cch@7x?6n_)Mi6t)8388eHDt{@!I%s%vYXpiq~Jw9A8G(v(+N7!eu@nRgkXU+4KW z*A@mk+Pb>^pB`t)u~YVgUyxT+6bU^E7Z2|r&>2U^$Nz+c;BQRSCWMCCj#o({oO3>d zWplW~u7HF zhk{dpHH-7@5OEkS5;b5J2C=3apfSl_?9g9G!aj)5KG+D(U)N4u&QCp%HLz?rv4M+= z`^9NV1=c$-D;&`xe+VAQ$h?1Xyivc;*O3w*AO9ExV#2$dB0Ibv>*^|E{?=ixz4v?E9p!p)Gb53n z2GW&iSYj*Gucd_8vVkD~H9^ALk@(`cNZiZID<&nyW|Kcra`p8?Cf*3f|0HEbU##Zg zwM^olCyLc>F@&Qs)sYJM#l`$G;+@if_eo22Y5!X5BxW+YpkJZve(b?)R1K@A2>C}U KsA4H2|NjG7+68+6 diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html deleted file mode 100644 index 6e68e07..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld-members.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::SPODELd Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::SPODELd, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPODE)bayesnet::SPODEprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    commonFit(const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) (defined in bayesnet::SPODELd)bayesnet::SPODELd
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::SPODELd)bayesnet::SPODELd
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::SPODELd)bayesnet::SPODELd
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="SPODE") const override (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
    localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    SPODE(int root) (defined in bayesnet::SPODE)bayesnet::SPODEexplicit
    SPODELd(int root) (defined in bayesnet::SPODELd)bayesnet::SPODELdexplicit
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    version() (defined in bayesnet::SPODELd)bayesnet::SPODELdinlinestatic
    Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
    ~SPODE()=default (defined in bayesnet::SPODE)bayesnet::SPODEvirtual
    ~SPODELd()=default (defined in bayesnet::SPODELd)bayesnet::SPODELdvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html deleted file mode 100644 index a087449..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - - - - -BayesNet: bayesnet::SPODELd Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::SPODELd Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::SPODELd:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::SPODELd:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     SPODELd (int root)
     
    SPODELdfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
     
    SPODELdfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
     
    SPODELdcommonFit (const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states)
     
    std::vector< std::string > graph (const std::string &name="SPODE") const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    - Public Member Functions inherited from bayesnet::SPODE
     SPODE (int root)
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - Public Member Functions inherited from bayesnet::Proposal
     Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
     
    - - - -

    -Static Public Member Functions

    static std::string version ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Member Functions inherited from bayesnet::SPODE
    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - Protected Member Functions inherited from bayesnet::Proposal
    void checkInput (const torch::Tensor &X, const torch::Tensor &y)
     
    torch::Tensor prepareX (torch::Tensor &X)
     
    map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
     
    map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    - Protected Attributes inherited from bayesnet::Proposal
    torch::Tensor Xf
     
    torch::Tensor y
     
    map< std::string, mdlp::CPPFImdlp * > discretizers
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file SPODELd.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ SPODELd()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::SPODELd::SPODELd (int root)
    -
    -explicit
    -
    - -

    Definition at line 10 of file SPODELd.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ commonFit()

    - -
    -
    - - - - - - - - - - - - - - - - -
    SPODELd & bayesnet::SPODELd::commonFit (const std::vector< std::string > & features,
    const std::string & className,
    map< std::string, std::vector< int > > & states )
    -
    - -

    Definition at line 29 of file SPODELd.cc.

    - -
    -
    - -

    ◆ fit() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    SPODELd & bayesnet::SPODELd::fit (torch::Tensor & dataset,
    const std::vector< std::string > & features,
    const std::string & className,
    map< std::string, std::vector< int > > & states )
    -
    -override
    -
    - -

    Definition at line 19 of file SPODELd.cc.

    - -
    -
    - -

    ◆ fit() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SPODELd & bayesnet::SPODELd::fit (torch::Tensor & X,
    torch::Tensor & y,
    const std::vector< std::string > & features,
    const std::string & className,
    map< std::string, std::vector< int > > & states )
    -
    -override
    -
    - -

    Definition at line 11 of file SPODELd.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::SPODELd::graph (const std::string & name = "SPODE") const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::SPODE.

    - -

    Definition at line 46 of file SPODELd.cc.

    - -
    -
    - -

    ◆ predict()

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::SPODELd::predict (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 41 of file SPODELd.cc.

    - -
    -
    - -

    ◆ version()

    - -
    -
    - - - - - -
    - - - - - - - -
    static std::string bayesnet::SPODELd::version ()
    -
    -inlinestatic
    -
    - -

    Definition at line 22 of file SPODELd.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPODELd.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map deleted file mode 100644 index 9ca9e5f..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 deleted file mode 100644 index a37512c..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -53a8a1ce38ea1de9807975652116ea2e \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__coll__graph.png deleted file mode 100644 index 4de1b0f30cfe718af658d6b643e0f75701b07430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17423 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 - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 deleted file mode 100644 index a8f9b26..0000000 --- a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c2a8d41159422d470d0010f0fdadea9c \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_p_o_d_e_ld__inherit__graph.png deleted file mode 100644 index 4949d442bd6dc2843783694666100276da2bd53b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13621 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 B$$J0* diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html b/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html deleted file mode 100644 index a44a2c8..0000000 --- a/docs/manual/classbayesnet_1_1_s_pn_d_e-members.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::SPnDE Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::SPnDE, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::SPnDE)bayesnet::SPnDEprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="SPnDE") const override (defined in bayesnet::SPnDE)bayesnet::SPnDEvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    SPnDE(std::vector< int > parents) (defined in bayesnet::SPnDE)bayesnet::SPnDEexplicit
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~SPnDE()=default (defined in bayesnet::SPnDE)bayesnet::SPnDEvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e.html b/docs/manual/classbayesnet_1_1_s_pn_d_e.html deleted file mode 100644 index a6f9ef0..0000000 --- a/docs/manual/classbayesnet_1_1_s_pn_d_e.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - -BayesNet: bayesnet::SPnDE Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::SPnDE Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::SPnDE:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::SPnDE:
    -
    -
    Collaboration graph
    - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     SPnDE (std::vector< int > parents)
     
    std::vector< std::string > graph (const std::string &name="SPnDE") const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file SPnDE.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ SPnDE()

    - -
    -
    - - - - - -
    - - - - - - - -
    bayesnet::SPnDE::SPnDE (std::vector< int > parents)
    -
    -explicit
    -
    - -

    Definition at line 11 of file SPnDE.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::SPnDE::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 13 of file SPnDE.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::SPnDE::graph (const std::string & name = "SPnDE") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 33 of file SPnDE.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/SPnDE.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map deleted file mode 100644 index b7ecb8a..0000000 --- a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 deleted file mode 100644 index f1c4d74..0000000 --- a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7823db61a54dfd03f5143e755580cf6b \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png b/docs/manual/classbayesnet_1_1_s_pn_d_e__coll__graph.png deleted file mode 100644 index dd12c33e638b822edb013487aba053715a63f755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11430 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 - - - - - - diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 deleted file mode 100644 index fa18236..0000000 --- a/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4818c342999832413f96ae3dcaa8265 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png b/docs/manual/classbayesnet_1_1_s_pn_d_e__inherit__graph.png deleted file mode 100644 index 3c32bb165a9c1315a3447d0ab5f36690078322c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7614 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 diff --git a/docs/manual/classbayesnet_1_1_t_a_n-members.html b/docs/manual/classbayesnet_1_1_t_a_n-members.html deleted file mode 100644 index 62e924e..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n-members.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::TAN Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::TAN, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::TAN)bayesnet::TANprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="TAN") const override (defined in bayesnet::TAN)bayesnet::TANvirtual
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    TAN() (defined in bayesnet::TAN)bayesnet::TAN
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~TAN()=default (defined in bayesnet::TAN)bayesnet::TANvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n.html b/docs/manual/classbayesnet_1_1_t_a_n.html deleted file mode 100644 index 3fc7816..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - -BayesNet: bayesnet::TAN Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::TAN Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::TAN:
    -
    -
    Inheritance graph
    - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::TAN:
    -
    -
    Collaboration graph
    - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    std::vector< std::string > graph (const std::string &name="TAN") const override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - - - - - - - - - - -

    -Protected Member Functions

    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    -

    Detailed Description

    -
    -

    Definition at line 11 of file TAN.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ TAN()

    - -
    -
    - - - - - - - -
    bayesnet::TAN::TAN ()
    -
    - -

    Definition at line 10 of file TAN.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ buildModel()

    - -
    -
    - - - - - -
    - - - - - - - -
    void bayesnet::TAN::buildModel (const torch::Tensor & weights)
    -
    -overrideprotectedvirtual
    -
    - -

    Implements bayesnet::Classifier.

    - -

    Definition at line 12 of file TAN.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::TAN::graph (const std::string & name = "TAN") const
    -
    -overridevirtual
    -
    - -

    Implements bayesnet::BaseClassifier.

    - -

    Definition at line 41 of file TAN.cc.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TAN.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map deleted file mode 100644 index 0684efa..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 deleted file mode 100644 index 4c81c1b..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c02f97b240585f440b3a51e1b4f83e2c \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png b/docs/manual/classbayesnet_1_1_t_a_n__coll__graph.png deleted file mode 100644 index da93f4c674d6b1533f9b5db053b62e4f85826c25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11120 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 - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 deleted file mode 100644 index 05ec32e..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -056d4ba29c060a1c0448fe1ba10ac890 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png b/docs/manual/classbayesnet_1_1_t_a_n__inherit__graph.png deleted file mode 100644 index bced2e0c1d9b95fa2d120fd5a83798bf65581f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9898 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 BJI??B diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html b/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html deleted file mode 100644 index 6b481dc..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n_ld-members.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -BayesNet: Member List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet::TANLd Member List
    -
    -
    - -

    This is the complete list of members for bayesnet::TANLd, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    addNodes() (defined in bayesnet::Classifier)bayesnet::Classifier
    buildDataset(torch::Tensor &y) (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    buildModel(const torch::Tensor &weights) override (defined in bayesnet::TAN)bayesnet::TANprotectedvirtual
    checkFitParameters() (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    checkInput(const torch::Tensor &X, const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Classifier(Network model) (defined in bayesnet::Classifier)bayesnet::Classifier
    className (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    dataset (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    discretizers (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    dump_cpt() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    features (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override (defined in bayesnet::TANLd)bayesnet::TANLd
    fit(std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit(torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    fit_local_discretization(const torch::Tensor &y) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    fitted (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    getClassNumStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNotes() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getNumberOfEdges() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfNodes() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getNumberOfStates() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    getStatus() const override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    getValidHyperparameters() (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierinline
    getVersion() override (defined in bayesnet::Classifier)bayesnet::Classifierinlinevirtual
    graph(const std::string &name="TAN") const override (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
    localDiscretizationProposal(const map< std::string, std::vector< int > > &states, Network &model) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    m (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    metrics (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    model (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    n (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    notes (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    predict(torch::Tensor &X) override (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
    predict(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(torch::Tensor &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    predict_proba(std::vector< std::vector< int > > &X) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    prepareX(torch::Tensor &X) (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    Proposal(torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_) (defined in bayesnet::Proposal)bayesnet::Proposal
    score(torch::Tensor &X, torch::Tensor &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    score(std::vector< std::vector< int > > &X, std::vector< int > &y) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    setHyperparameters(const nlohmann::json &hyperparameters) override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    show() const override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    states (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    status (defined in bayesnet::Classifier)bayesnet::Classifierprotected
    TAN() (defined in bayesnet::TAN)bayesnet::TAN
    TANLd() (defined in bayesnet::TANLd)bayesnet::TANLd
    topological_order() override (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    trainModel(const torch::Tensor &weights) override (defined in bayesnet::Classifier)bayesnet::Classifierprotectedvirtual
    validHyperparameters (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifierprotected
    version() (defined in bayesnet::TANLd)bayesnet::TANLdinlinestatic
    Xf (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    y (defined in bayesnet::Proposal)bayesnet::Proposalprotected
    ~BaseClassifier()=default (defined in bayesnet::BaseClassifier)bayesnet::BaseClassifiervirtual
    ~Classifier()=default (defined in bayesnet::Classifier)bayesnet::Classifiervirtual
    ~Proposal() (defined in bayesnet::Proposal)bayesnet::Proposalvirtual
    ~TAN()=default (defined in bayesnet::TAN)bayesnet::TANvirtual
    ~TANLd()=default (defined in bayesnet::TANLd)bayesnet::TANLdvirtual
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld.html b/docs/manual/classbayesnet_1_1_t_a_n_ld.html deleted file mode 100644 index 2cbe980..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n_ld.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - -BayesNet: bayesnet::TANLd Class Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    - -
    bayesnet::TANLd Class Reference
    -
    -
    -
    -Inheritance diagram for bayesnet::TANLd:
    -
    -
    Inheritance graph
    - - - - - - - - - - - -
    [legend]
    -
    -Collaboration diagram for bayesnet::TANLd:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    TANLdfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, map< std::string, std::vector< int > > &states) override
     
    std::vector< std::string > graph (const std::string &name="TAN") const override
     
    torch::Tensor predict (torch::Tensor &X) override
     
    - Public Member Functions inherited from bayesnet::Classifier
     Classifier (Network model)
     
    Classifierfit (std::vector< std::vector< int > > &X, std::vector< int > &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &X, torch::Tensor &y, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states) override
     
    Classifierfit (torch::Tensor &dataset, const std::vector< std::string > &features, const std::string &className, std::map< std::string, std::vector< int > > &states, const torch::Tensor &weights) override
     
    void addNodes ()
     
    int getNumberOfNodes () const override
     
    int getNumberOfEdges () const override
     
    int getNumberOfStates () const override
     
    int getClassNumStates () const override
     
    std::vector< int > predict (std::vector< std::vector< int > > &X) override
     
    torch::Tensor predict_proba (torch::Tensor &X) override
     
    std::vector< std::vector< double > > predict_proba (std::vector< std::vector< int > > &X) override
     
    status_t getStatus () const override
     
    std::string getVersion () override
     
    float score (torch::Tensor &X, torch::Tensor &y) override
     
    float score (std::vector< std::vector< int > > &X, std::vector< int > &y) override
     
    std::vector< std::string > show () const override
     
    std::vector< std::string > topological_order () override
     
    std::vector< std::string > getNotes () const override
     
    std::string dump_cpt () const override
     
    void setHyperparameters (const nlohmann::json &hyperparameters) override
     
    - Public Member Functions inherited from bayesnet::BaseClassifier
    std::vector< std::string > & getValidHyperparameters ()
     
    - Public Member Functions inherited from bayesnet::Proposal
     Proposal (torch::Tensor &pDataset, std::vector< std::string > &features_, std::string &className_)
     
    - - - -

    -Static Public Member Functions

    static std::string version ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Member Functions inherited from bayesnet::TAN
    void buildModel (const torch::Tensor &weights) override
     
    - Protected Member Functions inherited from bayesnet::Classifier
    void checkFitParameters ()
     
    void trainModel (const torch::Tensor &weights) override
     
    void buildDataset (torch::Tensor &y)
     
    - Protected Member Functions inherited from bayesnet::Proposal
    void checkInput (const torch::Tensor &X, const torch::Tensor &y)
     
    torch::Tensor prepareX (torch::Tensor &X)
     
    map< std::string, std::vector< int > > localDiscretizationProposal (const map< std::string, std::vector< int > > &states, Network &model)
     
    map< std::string, std::vector< int > > fit_local_discretization (const torch::Tensor &y)
     
    - Protected Attributes inherited from bayesnet::Classifier
    bool fitted
     
    unsigned int m
     
    unsigned int n
     
    Network model
     
    Metrics metrics
     
    std::vector< std::string > features
     
    std::string className
     
    std::map< std::string, std::vector< int > > states
     
    torch::Tensor dataset
     
    status_t status = NORMAL
     
    std::vector< std::string > notes
     
    - Protected Attributes inherited from bayesnet::BaseClassifier
    std::vector< std::string > validHyperparameters
     
    - Protected Attributes inherited from bayesnet::Proposal
    torch::Tensor Xf
     
    torch::Tensor y
     
    map< std::string, mdlp::CPPFImdlp * > discretizers
     
    -

    Detailed Description

    -
    -

    Definition at line 13 of file TANLd.h.

    -

    Constructor & Destructor Documentation

    - -

    ◆ TANLd()

    - -
    -
    - - - - - - - -
    bayesnet::TANLd::TANLd ()
    -
    - -

    Definition at line 10 of file TANLd.cc.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ fit()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TANLd & bayesnet::TANLd::fit (torch::Tensor & X,
    torch::Tensor & y,
    const std::vector< std::string > & features,
    const std::string & className,
    map< std::string, std::vector< int > > & states )
    -
    -override
    -
    - -

    Definition at line 11 of file TANLd.cc.

    - -
    -
    - -

    ◆ graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    std::vector< std::string > bayesnet::TANLd::graph (const std::string & name = "TAN") const
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::TAN.

    - -

    Definition at line 32 of file TANLd.cc.

    - -
    -
    - -

    ◆ predict()

    - -
    -
    - - - - - -
    - - - - - - - -
    torch::Tensor bayesnet::TANLd::predict (torch::Tensor & X)
    -
    -overridevirtual
    -
    - -

    Reimplemented from bayesnet::Classifier.

    - -

    Definition at line 27 of file TANLd.cc.

    - -
    -
    - -

    ◆ version()

    - -
    -
    - - - - - -
    - - - - - - - -
    static std::string bayesnet::TANLd::version ()
    -
    -inlinestatic
    -
    - -

    Definition at line 21 of file TANLd.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.h
    • -
    • /Users/rmontanana/Code/BayesNet/bayesnet/classifiers/TANLd.cc
    • -
    -
    -
    - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map deleted file mode 100644 index 4d2ffb3..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 deleted file mode 100644 index 3e810b3..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -52efa3ac9345f1a4c851d818a575585f \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png b/docs/manual/classbayesnet_1_1_t_a_n_ld__coll__graph.png deleted file mode 100644 index 86f237556c2b514fa9a367d17c2c863273fe08b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16530 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 - - - - - - - - - - diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 b/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 deleted file mode 100644 index f98e719..0000000 --- a/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -acb57f33de9f26c8371c599af6ced955 \ No newline at end of file diff --git a/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png b/docs/manual/classbayesnet_1_1_t_a_n_ld__inherit__graph.png deleted file mode 100644 index 6a30308f5f8b30c89f6d7ceb265e6298ebff5637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12664 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 - - - - - - -BayesNet: Class Index - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Class Index
    -
    -
    -
    A | B | C | E | K | N | P | S | T
    -
    -
    -
    A
    -
    A2DE (bayesnet)
    AODE (bayesnet)
    AODELd (bayesnet)
    -
    -
    B
    -
    BaseClassifier (bayesnet)
    Boost (bayesnet)
    BoostA2DE (bayesnet)
    BoostAODE (bayesnet)
    -
    -
    C
    -
    Classifier (bayesnet)
    -
    -
    E
    -
    Ensemble (bayesnet)
    -
    -
    K
    -
    KDB (bayesnet)
    KDBLd (bayesnet)
    -
    -
    N
    -
    Network (bayesnet)
    Node (bayesnet)
    -
    -
    P
    -
    Proposal (bayesnet)
    -
    -
    S
    -
    SPnDE (bayesnet)
    SPODE (bayesnet)
    SPODELd (bayesnet)
    -
    -
    T
    -
    TAN (bayesnet)
    TANLd (bayesnet)
    -
    -
    -
    - - - - diff --git a/docs/manual/clipboard.js b/docs/manual/clipboard.js deleted file mode 100644 index 42c1fb0..0000000 --- a/docs/manual/clipboard.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - -The code below is based on the Doxygen Awesome project, see -https://github.com/jothepro/doxygen-awesome-css - -MIT License - -Copyright (c) 2021 - 2022 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - -let clipboard_title = "Copy to clipboard" -let clipboard_icon = `` -let clipboard_successIcon = `` -let clipboard_successDuration = 1000 - -$(function() { - if(navigator.clipboard) { - const fragments = document.getElementsByClassName("fragment") - for(const fragment of fragments) { - const clipboard_div = document.createElement("div") - clipboard_div.classList.add("clipboard") - clipboard_div.innerHTML = clipboard_icon - clipboard_div.title = clipboard_title - $(clipboard_div).click(function() { - const content = this.parentNode.cloneNode(true) - // filter out line number and folded fragments from file listings - content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) - let text = content.textContent - // remove trailing newlines and trailing spaces from empty lines - text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') - navigator.clipboard.writeText(text); - this.classList.add("success") - this.innerHTML = clipboard_successIcon - window.setTimeout(() => { // switch back to normal icon after timeout - this.classList.remove("success") - this.innerHTML = clipboard_icon - }, clipboard_successDuration); - }) - fragment.insertBefore(clipboard_div, fragment.firstChild) - } - } -}) diff --git a/docs/manual/closed.png b/docs/manual/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/docs/manual/cookie.js b/docs/manual/cookie.js deleted file mode 100644 index 53ad21d..0000000 --- a/docs/manual/cookie.js +++ /dev/null @@ -1,58 +0,0 @@ -/*! - Cookie helper functions - Copyright (c) 2023 Dimitri van Heesch - Released under MIT license. -*/ -let Cookie = { - cookie_namespace: 'doxygen_', - - readSetting(cookie,defVal) { - if (window.chrome) { - const val = localStorage.getItem(this.cookie_namespace+cookie) || - sessionStorage.getItem(this.cookie_namespace+cookie); - if (val) return val; - } else { - let myCookie = this.cookie_namespace+cookie+"="; - if (document.cookie) { - const index = document.cookie.indexOf(myCookie); - if (index != -1) { - const valStart = index + myCookie.length; - let valEnd = document.cookie.indexOf(";", valStart); - if (valEnd == -1) { - valEnd = document.cookie.length; - } - return document.cookie.substring(valStart, valEnd); - } - } - } - return defVal; - }, - - writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete - if (window.chrome) { - if (days==0) { - sessionStorage.setItem(this.cookie_namespace+cookie,val); - } else { - localStorage.setItem(this.cookie_namespace+cookie,val); - } - } else { - let date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; - document.cookie = this.cookie_namespace + cookie + "=" + - val + "; SameSite=Lax;" + expiration + "path=/"; - } - }, - - eraseSetting(cookie) { - if (window.chrome) { - if (localStorage.getItem(this.cookie_namespace+cookie)) { - localStorage.removeItem(this.cookie_namespace+cookie); - } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { - sessionStorage.removeItem(this.cookie_namespace+cookie); - } - } else { - this.writeSetting(cookie,'',-1); - } - }, -} diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html deleted file mode 100644 index 9824342..0000000 --- a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/ensembles Directory Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    ensembles Directory Reference
    -
    -
    -
    -Directory dependency graph for ensembles:
    -
    -
    /Users/rmontanana/Code/BayesNet/bayesnet/ensembles
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

     A2DE.cc
     
     A2DE.h
     
     AODE.cc
     
     AODE.h
     
     AODELd.cc
     
     AODELd.h
     
     Boost.cc
     
     Boost.h
     
     BoostA2DE.cc
     
     BoostA2DE.h
     
     BoostAODE.cc
     
     BoostAODE.h
     
     Ensemble.cc
     
     Ensemble.h
     
    -
    -
    - - - - diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js deleted file mode 100644 index d44bdc7..0000000 --- a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741.js +++ /dev/null @@ -1,17 +0,0 @@ -var dir_2f68445c4ac4316280c650d0a13b2741 = -[ - [ "A2DE.cc", "_a2_d_e_8cc_source.html", null ], - [ "A2DE.h", "_a2_d_e_8h_source.html", null ], - [ "AODE.cc", "_a_o_d_e_8cc_source.html", null ], - [ "AODE.h", "_a_o_d_e_8h_source.html", null ], - [ "AODELd.cc", "_a_o_d_e_ld_8cc_source.html", null ], - [ "AODELd.h", "_a_o_d_e_ld_8h_source.html", null ], - [ "Boost.cc", "_boost_8cc_source.html", null ], - [ "Boost.h", "_boost_8h_source.html", null ], - [ "BoostA2DE.cc", "_boost_a2_d_e_8cc_source.html", null ], - [ "BoostA2DE.h", "_boost_a2_d_e_8h_source.html", null ], - [ "BoostAODE.cc", "_boost_a_o_d_e_8cc_source.html", null ], - [ "BoostAODE.h", "_boost_a_o_d_e_8h_source.html", null ], - [ "Ensemble.cc", "_ensemble_8cc_source.html", null ], - [ "Ensemble.h", "_ensemble_8h_source.html", null ] -]; \ No newline at end of file diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map deleted file mode 100644 index b78928c..0000000 --- a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 deleted file mode 100644 index 8dd543c..0000000 --- a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -6cc09d9126554d4a21b3538ccfb3d762 \ No newline at end of file diff --git a/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png b/docs/manual/dir_2f68445c4ac4316280c650d0a13b2741_dep.png deleted file mode 100644 index 8f3e6435e76d2f3f4ddf870498f4cf5159cf56c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmY*bcRU+f6i#_XDXra-J}n+?#j3`rP_4aHjM_6|6sZx^h&^i4#ty1R%#s=*ln$y$ zs`jYeAgXGFTFpy;@2~f}zkAL<_nz;&=iYPAmtuYNOXn#gYXJs}3aBfpq4^H?x|O9-YSHoTu3@5Fv5wE7w@xNi~YaR$QcQM{ajmHQ(}s7 zN_h*lClQHr;>+H0bB;2#v&~+XnEMb-i+_@hDwD&$jVbIztKTVN0(_2rll7Z zM&cW9b@}(LZVqXd4U58HFz;K+-3(sYu-)9M$Iu9ct+QTlSp;G5^5ws*i#nho)d#uz*CU zk2)AUW@c%b7gpQU#1+%?`A4p~x%nFPNd91h`h-}h>W#G3*Jm>~ub6PYNyhs>zb!A{ z5*nV?jm;`A$LCGqFv6}nfO}`UAP5Jp=4O7tuT`S-rSK7iRyt5`E#nNxTJb_;f>0sR zw>ZxuWq5XWFz{N`%Svy?1-0K1y;^fR4?n6gUD$K^Frc5>zu#wRDdYU`dYKl72;_ER z`0+jif9rbyt?Om2zF2U^-5BO0Sy?v*I^(CZzLyp9ad0AHeosU7bVa?O)2HYIofG{K zsao$!Mf&<@8?$4WcS5|z^Z;mSo57Q_(x$o6sl^-ED(>U|-|XE#%f=zGQ*?PEY(@sBKs@xWA@<>KLpk{wesRfBw~8 z`2cOa4N)3TAgBN#eksyOGUDXDEbbjI5v3 zB`uouGyMEM8?yJ~Yr$})OX3?itMZ!@<|myP>J7ofWaE+-gu>;%r)$H@{5*Vo7rFiU zhlV6qz7v_QN(M?~J1?&-l6&_D&*uvWhIo?YE}dt3a`0nF1zM4niD6}83=9kmd$kyT zQ{rZ@+didq-v(f78KtTZkX_A}r)5EV7Gw!fb45$Z>0sr;m@D;m!;Icqbq-WzTGh zo9l+8WNA*NcnmW$V@6(PZ_qriAS&vCOW#OYf}pfizVXtihkG;s1?3~lR=?jTA@aV{ zi9L=bwYAT%N!e3JQ*QfPwD`*-T#7+IfcEzGv&hi%Ox#=O2)!F(ku}K@U@+KjdnZ82 ztHFv~Q64dVgY7{XigxCE|5rnI1YlSp-D$?nmfWt)M4A;gO+Kvq>wUgYda0dg8WeE64KF=nW) z^=nip2@@Ol*R5+$KP+dbB!I042Zq3TZy0)<#Q#{|? zd(6(n*!Pt6u(32MF|oAQTa(>ic5!Lm0Rn*_9yfk9SA+B1RT={i{L|GHA+{wXbG2lQ zbb54XYHqIS)bn7xK0N1}G_7Z)O@GThLa%ICMpW^oy4P)fZW%Eg?s0o7anszw;_b=m z>d#3RV=ivF;kkiEK`i{iHAvWXW!(N`=w+lh74)`3)GF4~2uc$EPNEo#S`;?;qEsSZ zF%F?sF+NG-8X4X?Rbu_ZX4$UmV(l=Mk zHwm$N(VHgjF&*B5*@wgTYsIfiNH(q)HnE=@dx_DkBHuo>iaqU@7o~If1N%DL)VG5| zxyeUFr3s;GTequ0*-!YCO(@=$HZ}v(VBe9?3&Gyq?V2jdcza*RuHu4nRfL{wK|z5{ z(PaSvfhxHXDRpdXQT`#QZe&>TQB&^5fE%{B0I!NbJ0BeeHyza}u&|wTHCbo|*)%22 zOQVuX01gbt$3IU9O1+ADotvY;nDW3oHxp{%4=4jnq?cvu(!@fbguF6I8&aoI&6HJ&e= z&9S}JPBR2gaWS#36!HHk#i|!RC1rO#pR!sp%3R+mi=uqe8YI&JRhY^HttlXwF-M47 z<7mzhke>{6*-VB%~TdVIYKC~u{Pmo893A9V+cRw(_Umq*Hv2;3K@(tA4=&RMOr za<(2}@Tb!kI4q!_qhAFXr`1)SPGK9MG}()7wxq10BD?WnC2tHU^k7A&X|jix3cBLc zCpD8{G9(5^tJ>QSh8uOcwMqmB2Twkds>%9hs-ln3sao2d{Tj*zMiRi#bIc1F^rDgN z2mcWsn)K56VyFm1@i__YgscBoOBTNBA))@di5^v3sGHB@4`14;P5y!uaV#T*Gu Y7ybUL1C$4$OF@9HrjbVdeaGm30r?d&T>t<8 diff --git a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html deleted file mode 100644 index be6d54d..0000000 --- a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet Directory Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    bayesnet Directory Reference
    -
    -
    - - - - - - - - -

    -Directories

     classifiers
     
     ensembles
     
     network
     
    - - - -

    -Files

     BaseClassifier.h
     
    -
    -
    - - - - diff --git a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js b/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js deleted file mode 100644 index 4a6e185..0000000 --- a/docs/manual/dir_40070fdff85d618b4d1d3ab4ac4f79bb.js +++ /dev/null @@ -1,7 +0,0 @@ -var dir_40070fdff85d618b4d1d3ab4ac4f79bb = -[ - [ "classifiers", "dir_520a649ed2b1c3b658a695aeefe46a5a.html", "dir_520a649ed2b1c3b658a695aeefe46a5a" ], - [ "ensembles", "dir_2f68445c4ac4316280c650d0a13b2741.html", "dir_2f68445c4ac4316280c650d0a13b2741" ], - [ "network", "dir_efcd97b18bba957e8e278307db4f845a.html", "dir_efcd97b18bba957e8e278307db4f845a" ], - [ "BaseClassifier.h", "_base_classifier_8h_source.html", null ] -]; \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html deleted file mode 100644 index 65dc0cf..0000000 --- a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/classifiers Directory Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    classifiers Directory Reference
    -
    -
    -
    -Directory dependency graph for classifiers:
    -
    -
    /Users/rmontanana/Code/BayesNet/bayesnet/classifiers
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

     Classifier.cc
     
     Classifier.h
     
     KDB.cc
     
     KDB.h
     
     KDBLd.cc
     
     KDBLd.h
     
     Proposal.cc
     
     Proposal.h
     
     SPnDE.cc
     
     SPnDE.h
     
     SPODE.cc
     
     SPODE.h
     
     SPODELd.cc
     
     SPODELd.h
     
     TAN.cc
     
     TAN.h
     
     TANLd.cc
     
     TANLd.h
     
    -
    -
    - - - - diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js deleted file mode 100644 index 9cdb471..0000000 --- a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a.js +++ /dev/null @@ -1,21 +0,0 @@ -var dir_520a649ed2b1c3b658a695aeefe46a5a = -[ - [ "Classifier.cc", "_classifier_8cc_source.html", null ], - [ "Classifier.h", "_classifier_8h_source.html", null ], - [ "KDB.cc", "_k_d_b_8cc_source.html", null ], - [ "KDB.h", "_k_d_b_8h_source.html", null ], - [ "KDBLd.cc", "_k_d_b_ld_8cc_source.html", null ], - [ "KDBLd.h", "_k_d_b_ld_8h_source.html", null ], - [ "Proposal.cc", "_proposal_8cc_source.html", null ], - [ "Proposal.h", "_proposal_8h_source.html", null ], - [ "SPnDE.cc", "_s_pn_d_e_8cc_source.html", null ], - [ "SPnDE.h", "_s_pn_d_e_8h_source.html", null ], - [ "SPODE.cc", "_s_p_o_d_e_8cc_source.html", null ], - [ "SPODE.h", "_s_p_o_d_e_8h_source.html", null ], - [ "SPODELd.cc", "_s_p_o_d_e_ld_8cc_source.html", null ], - [ "SPODELd.h", "_s_p_o_d_e_ld_8h_source.html", null ], - [ "TAN.cc", "_t_a_n_8cc_source.html", null ], - [ "TAN.h", "_t_a_n_8h_source.html", null ], - [ "TANLd.cc", "_t_a_n_ld_8cc_source.html", null ], - [ "TANLd.h", "_t_a_n_ld_8h_source.html", null ] -]; \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map deleted file mode 100644 index 1ebf8c8..0000000 --- a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 deleted file mode 100644 index 0c97c91..0000000 --- a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -ddf4d873601a2bc95e40d58d84328f38 \ No newline at end of file diff --git a/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png b/docs/manual/dir_520a649ed2b1c3b658a695aeefe46a5a_dep.png deleted file mode 100644 index b3bde0e7451b3386b5f9c0787686183853dbd0ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2868 zcmV-43(NG0P) zEydKJMd^rXm5$n#X{oAODvN|Enh;A{Gp%imBnS~(Bq6wwP44{RlS_J%o8{)-+?zh% zzjDtx@AJO7c|PYo=jJ`n1tEkGLI@#*5JCtcgb+dqA%qa(cTHu;-~j;vGc_7b4;_ar zkB^W4QQ8}(eO2j|6n*;i@mu=QrzhRqJxbjl9krLlix`qZ~@Z|6)KX9vcO z8G%~;2!J0BAEbNN4s`G0gGakoygzR?029ZL;+<)ewJ{0{3u*7(n&_wq0M4E{O;5kh zc)Gjb>f%WFl1192TJ}*moqRp$*2Nbuk2d`H;|bvDROal|oJ||o;nvm(R~JVH1@`6P z!v{KJ{-IZQ?xv?RW>hHOZ2!t=?^{)wMN(vCWua23IDg?XG5Zg5?(7*pTe$*&4;L?B z&fNJVT~6c3v7h;B>zAB8bDE&w5cWk!P*6|+K*G^@9_Kvf<(C6ds~<6PL@^2f@QaIDF`Pii(Q( zeA55@ep ziaUmvmk$7)J3hNb4jb_*uT2=u;2}X+T3XSw*NXtyHfx4WX4WMpKp<%>u#olZRs(SU{8{!zM-n_dlO4Ve$0W4S1;^_wV0l*UlYiG#b*&8`lvX z9Z6*L0Y$u=95qRai8Qyf!_l#YcDqKS;ZkxExp{ebd;4gogNi6CCOrN8qG7{^)U9i{ zS^LEC1ePxgCq6#D%70t4xTYxP;NV#5_ExQ&OT4zXcOW}Eo20~xY}l}t510JC)ON*p z5Wl5Tsc7fsUZpXX6%)`Vt*JAcThhu(OG{I zj@R@s%u=mAQ;4dQq!0=wzn(%EpUJPM5XPtXV}qIZA6I@6gD^087)VqzNeZDLNg)&@ zDTIO~g-|ey^%TOm%wj!-FfN%sYMJV&Phph*l1`uc25Hw*jnP%Dw{q16oLaUrXdiN> z5DG?JPhn+cO{W(+mw%urAvN`yQO~qSO^T+rw#<50o*=KRZ+C2Crx72rmgz$%$a)H) zAnPfFLakl6`+Mczvp4=dW5b%-SXViQTvG@IvrCEx53-pz=UsAh9~&foW@aYy=DbT@ zULNrDb})R&A|fNc%*d=JYRUG*2HYo<8+0 ze*NV?v~_hQGc$waq(p=CYf4NyDT<1UxOwwNg^n$&=9RA6Ri*87aBw8%z+vqJ#W!!> zVASYwczgRYAaEedKV7AWQ&!z9fV|vX@^W*_9g8V3*`$b#iN>w16MkJg;^XPcn$;^y zJ+7>pS5S8CDqZ`oUAu})D|^)HM+_d=pOh8f3&YhO`Ok+uR~bnHP~+O%c;#?4HAdm8x#`Pu?(x@uf$G#c{q^4Rv(mu%d$1t+JL zI_qee8k1a45wUjqH68;eKc*-l$0x% zOKjWx`Fh1gXK~G|?ceU<*RvPdwtXiJts4SpYgZlm;TRW_Qwbgx!ps>{$jyDMb6-V0 zU*qcBg-e{faEZ7hCt0>!dF@jj{TY)bfv2^s)~sGh^X7IXj?-21 zN>}Zws@Ao7UU@aHo>v|H8IwtV%MrZfR+FFq||*CRb1n0#`L%O+u{YJ zr{5tYbR?6fOeZrlqr|b*(VsDyWKsZ3dSfzU$4?|ZJ-tNvA_oUYGVeb-?MB6Xuc&!7 z`}TX-+1V4b|8S|btLoILQ|3Mwmo_Eh|8(k%_UAEUCopF01nujP&=CwA^opX!)o;hB zt3Oj@vPl78X=$aXXH}ZgYF-s9t9F$>b*-MKtHzZf`ZESuPaza!J%vy(>FGmMo~)-3 z24U1Q#p9eDP8?4#W|y^su^*%|YEoooX0Uu&xG}pFRUp%cP%z4w;{v@4YZZ zO>J!r-iKaEQM{hQ&D}%iaUD9A|KW}>9VWS+Lewm|rl@6V?RpAPvm_~mf+U4dkfaa_ zk`zKgug@t|D%Hv6&F$Sll~lZKcu-)7t~Prj4(!&oU)t-}e)+O+o$V_^ucU~Ji(3&F z7q?=@J5#jV0s;cUbhT+}W2y6YN!lB>y%0hOA%qY@2qA - - - - - - -BayesNet: /Users/rmontanana/Code/BayesNet/bayesnet/network Directory Reference - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    network Directory Reference
    -
    -
    -
    -Directory dependency graph for network:
    -
    -
    /Users/rmontanana/Code/BayesNet/bayesnet/network
    - - - - -
    - - - - - - - - - - -

    -Files

     Network.cc
     
     Network.h
     
     Node.cc
     
     Node.h
     
    -
    -
    - - - - diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js deleted file mode 100644 index 6c973b6..0000000 --- a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a.js +++ /dev/null @@ -1,7 +0,0 @@ -var dir_efcd97b18bba957e8e278307db4f845a = -[ - [ "Network.cc", "_network_8cc_source.html", null ], - [ "Network.h", "_network_8h_source.html", null ], - [ "Node.cc", "_node_8cc_source.html", null ], - [ "Node.h", "_node_8h_source.html", null ] -]; \ No newline at end of file diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map deleted file mode 100644 index 203b233..0000000 --- a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 deleted file mode 100644 index 25c4a94..0000000 --- a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -12407aa49bded8b8b8761369fc40201b \ No newline at end of file diff --git a/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png b/docs/manual/dir_efcd97b18bba957e8e278307db4f845a_dep.png deleted file mode 100644 index c421b297314d8f32d80f2f9a4c3cb23471361fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2778 zcmZWr2{aU38=fMQzHCuL+l*omM&hHPgi)GAN<@We5VCKLZHO!(#uhV7+4r#%vJR5T zGS-=7%ht$Pvm47lo%8?y`Tz5s``-JWd(J)Y^WOX1``kB7Ur(Fo*y&>c0DuR1Tk8Sa zd$POjQ7-nlvdEZcJ1(@2wie*vPfM-Oi30$R;gDJy4?T$sqh3!R&YW&q8GqZJ?vH|0 z2SKtgzdG|KTsk!{GwecYb{2uol6NXd$P>>tbEqB68I1fY-cfL(EYFs!?D5O`aIuId zQjgS4w3MupSwL`h&oh2&;ixa0EP5w#RgH0-F;Qpzd<@P9IU4v6YewAZO(0{j*u>ny zIRO=;ZHTDoM77Phug|Nktt~!})*fUrCu?iVvwm+;+g7jpQelTh`bA2&%CJ4FDUYm3 zH>wErudn)0F))qg=H^c8DjGP96|BRww)ct_!+a1amo*iR$Dp!ARmE=OZkKe1adr^@ z>w=Ex@o;UarwDtC8>i`K!V8|Rb02ET(gAr%+h>irOt(=?f{Wxd7lX~Xqj0zb=R2rq zHBmsdk$%(SXzf~5|JW^WuV|t>slK*1XgXxJtSot?&LrQ%#KlGaMdhbKc^w^{yyD_U z=K9W#chN~9#o?l&qNu(H3)tRM<(ZlIxw$!`&0<+3la1tyWR( zqnApYp%wS;2Gkuaa*Y7&7d5yy*T{-ma3y{%-z6SuS!Tvj7dmnCX_Sau8LuQfv9fF>cnn5 z8>X#|mf+Md+7VZt;+SZW8)qVR14n*d7_-!0luo)DE&cA*<|Ep=na8f6KY%At<`VM z&4KKU-^*v+xxx*TsngTd#4_6{ zYk;L?rr;UDoBGa@kBXkQmFa+XHarePU`k2j{*9UN*^AndDW8~B;^})Ig)xlKpA%JXp`jfe)5>w|oH+G(&@1VUrR-h2J}Zcb z9trYi$5u&l&t#ex1ppG|4g#{QKr*tjhuW#sj3-r#l0wIttL(*~(C}P50`s|mM1n}D zo*8x=ogG@e-^F}UnY7Aqt@dCk?XmcJj@N9a*Wi1Wx2xS4-FW=0|GGkJP@`oLInsM= zHgDa-$0rm@t;H;9*xE|LhfM6pc8@S=jTx1uQ>qiHQbNae;PCNB;N%Eyn|(l*<^yot zV`=5hD;?(M&CS6PM~~u1#zterDDTOI6F-$+WvoaojPf9TQmLpks|(~4(By5DhAN^H z$i!MBdL#2`)N$_3&QB4+X7Ce;ivL$q_Dsik%C|&KUQ7WjGoov>O4c0aXRi{mQj+rg zKGpWElS2Z1Kvo(Lx%%3wJ9m{#qnWxG)d;)A#m2pVhrEA3t@oq#0HZUSSP)SW6t;~b#C7elV+#BS*;(3DTGBIhF036!b}*I5VC(5}Ve+s{LmE$;mrDHyLOkqR6o*BA zd{0cl}ZJ}&&B#{ z?H#o*mZu=hZ4_dFBFtRSaYeT{VywWaF4L658LAQy`|aYfLeRZ-@$HK9Ojl z`d^T^xBqqFN!4v6a&qX%UzDqHdR|^4VP7U!&M6-f6clX0eTyh8lojNF9^%2k^!NxG z_VyJ}TK*tYSb2=kz@R^*A-GV?m-!rx=Bq-w^4yF?xMw8HSsvd!+v-f!*k#q4K3-Zf z%zIi|S~^2NAVS2YVvzSZ`}~{KqjIuh@zJkR`~f}AODp`;G~MsthgJ3Uql>*3=f0b- zR_Eu(f^lbWrRhhDl{Q;rV%J84LvrIL7~rOR+PG-K_L=kNKX|g)X(J-|7B=f%s~K_E5PGNIFsOGiHR7R9Lt^HvSRvOTjpqMx)?= z+=y{7cd#m9@!!?eUD?>MV*f#FUZmpe@K*<|U*JAUuMwe>07)sSiDf<@;XG-tZHM>V z-I9t5OLFtgZ|h~&GrzMO>gbzG0XoihOv|_Dm?|;<}m79*+uU@wj6Alj_ILi1Lxn&bJ3Mpz+EshPfvphtbWL z3|_su_OkWs*JC!4QY-X^s|8QnyQKTBf!QBUWxDJ2&FY0~&eqNuZ5TS{ltw^^ipZt` z=jXn@6BwLm()34Vd9aKdTFuy|mqS(SugzOx#y{Wgz&_>X_T)B7#$T}5w>Dgb#?Ppe2175FbA Cp^;Gl diff --git a/docs/manual/doc.svg b/docs/manual/doc.svg deleted file mode 100644 index 0b928a5..0000000 --- a/docs/manual/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/docd.svg b/docs/manual/docd.svg deleted file mode 100644 index ac18b27..0000000 --- a/docs/manual/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/doxygen.css b/docs/manual/doxygen.css deleted file mode 100644 index 209912c..0000000 --- a/docs/manual/doxygen.css +++ /dev/null @@ -1,2244 +0,0 @@ -/* The standard CSS for doxygen 1.11.0*/ - -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---fragment-copy-ok-color: #2EC82E; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -/** special sections */ ---warning-color-bg: #f8d1cc; ---warning-color-hl: #b61825; ---warning-color-text: #75070f; ---note-color-bg: #faf3d8; ---note-color-hl: #f3a600; ---note-color-text: #5f4204; ---todo-color-bg: #e4f3ff; ---todo-color-hl: #1879C4; ---todo-color-text: #274a5c; ---test-color-bg: #e8e8ff; ---test-color-hl: #3939C4; ---test-color-text: #1a1a5c; ---deprecated-color-bg: #ecf0f3; ---deprecated-color-hl: #5b6269; ---deprecated-color-text: #43454a; ---bug-color-bg: #e4dafd; ---bug-color-hl: #5b2bdd; ---bug-color-text: #2a0d72; ---invariant-color-bg: #d8f1e3; ---invariant-color-hl: #44b86f; ---invariant-color-text: #265532; -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: #090D16; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---fragment-copy-ok-color: #0EA80E; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -/** special sections */ ---warning-color-bg: #2e1917; ---warning-color-hl: #ad2617; ---warning-color-text: #f5b1aa; ---note-color-bg: #3b2e04; ---note-color-hl: #f1b602; ---note-color-text: #ceb670; ---todo-color-bg: #163750; ---todo-color-hl: #1982D2; ---todo-color-text: #dcf0fa; ---test-color-bg: #121258; ---test-color-hl: #4242cf; ---test-color-text: #c0c0da; ---deprecated-color-bg: #2e323b; ---deprecated-color-hl: #738396; ---deprecated-color-text: #abb0bd; ---bug-color-bg: #2a2536; ---bug-color-hl: #7661b3; ---bug-color-text: #ae9ed6; ---invariant-color-bg: #303a35; ---invariant-color-hl: #76ce96; ---invariant-color-text: #cceed5; -}} -body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); -} - -body, table, div, p, dl { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 22px; -} - -/* @group Heading Levels */ - -.title { - font-family: var(--font-family-normal); - line-height: 28px; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h1.groupheader { - font-size: 150%; -} - -h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); -} - -dt { - font-weight: bold; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL { - background-image: var(--nav-gradient-active-image); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: var(--index-separator-color); -} - -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: var(--index-header-color); -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.even { - background-color: var(--index-even-item-bg-color); -} - -.classindex dl.odd { - background-color: var(--index-odd-item-bg-color); -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: var(--page-link-color); - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: var(--page-visited-link-color); -} - -a:hover { - text-decoration: none; - background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); -} - -a:hover > span.arrow { - text-decoration: none; - background : var(--nav-background-color); -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); -} - -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul.check { - list-style:none; - text-indent: -16px; - padding-left: 38px; -} -li.unchecked:before { - content: "\2610\A0"; -} -li.checked:before { - content: "\2611\A0"; -} - -ol { - text-indent: 0px; -} - -ul { - text-indent: 0px; - overflow: visible; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; - overflow-y: hidden; - position: relative; - min-height: 12px; - margin: 10px 0px; - padding: 10px 10px; - border: 1px solid var(--fragment-border-color); - border-radius: 4px; - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); -} - -pre.fragment { - word-wrap: break-word; - font-size: 10pt; - line-height: 125%; - font-family: var(--font-family-monospace); -} - -.clipboard { - width: 24px; - height: 24px; - right: 5px; - top: 5px; - opacity: 0; - position: absolute; - display: inline; - overflow: auto; - fill: var(--fragment-foreground-color); - justify-content: center; - align-items: center; - cursor: pointer; -} - -.clipboard.success { - border: 1px solid var(--fragment-foreground-color); - border-radius: 4px; -} - -.fragment:hover .clipboard, .clipboard.success { - opacity: .28; -} - -.clipboard:hover, .clipboard.success { - opacity: 1 !important; -} - -.clipboard:active:not([class~=success]) svg { - transform: scale(.91); -} - -.clipboard.success svg { - fill: var(--fragment-copy-ok-color); -} - -.clipboard.success { - border-color: var(--fragment-copy-ok-color); -} - -div.line { - font-family: var(--font-family-monospace); - font-size: 13px; - min-height: 13px; - line-height: 1.2; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); -} - -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} - -span.lineno { - padding-right: 4px; - margin-right: 9px; - text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); - white-space: pre; -} -span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); -} - -span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: var(--page-foreground-color); - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -p.formulaDsp { - text-align: center; -} - -img.dark-mode-visible { - display: none; -} -img.light-mode-visible { - display: none; -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; - width: var(--footer-logo-width); -} - -.compoundTemplParams { - color: var(--memdecl-template-color); - font-size: 80%; - line-height: 120%; -} - -/* @group Code Colorization */ - -span.keyword { - color: var(--code-keyword-color); -} - -span.keywordtype { - color: var(--code-type-keyword-color); -} - -span.keywordflow { - color: var(--code-flow-keyword-color); -} - -span.comment { - color: var(--code-comment-color); -} - -span.preprocessor { - color: var(--code-preprocessor-color); -} - -span.stringliteral { - color: var(--code-string-literal-color); -} - -span.charliteral { - color: var(--code-char-literal-color); -} - -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - -span.vhdldigit { - color: var(--code-vhdl-digit-color); -} - -span.vhdlchar { - color: var(--code-vhdl-char-color); -} - -span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); -} - -span.vhdllogic { - color: var(--code-vhdl-logic-color); -} - -blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); -} - -th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid var(--separator-color); -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); -} - -.memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: var(--memdecl-template-color); - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); - background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: var(--memdef-template-color); - font-weight: normal; - margin-left: 9px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px var(--glow-color); -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; -} - -.overload { - font-family: var(--font-family-monospace); - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; - padding: 0px; - padding-bottom: 1px; -} - -.paramname { - white-space: nowrap; - padding: 0px; - padding-bottom: 1px; - margin-left: 2px; -} - -.paramname em { - color: var(--memdef-param-name-color); - font-style: normal; - margin-right: 1px; -} - -.paramname .paramdefval { - font-family: var(--font-family-monospace); -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); - text-shadow: none; - color: var(--label-foreground-color); - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.odd { - padding-left: 6px; - background-color: var(--index-odd-item-bg-color); -} - -.directory tr.even { - padding-left: 6px; - background-color: var(--index-even-item-bg-color); -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: var(--page-link-color); -} - -.arrow { - color: var(--nav-arrow-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-open-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-doc-image); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: var(--footer-foreground-color); -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image: var(--memdef-title-gradient-image); - background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: var(--nav-gradient-image); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image: var(--nav-gradient-image); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:var(--nav-breadcrumb-image); - background-repeat:no-repeat; - background-position:right; - color: var(--nav-foreground-color); -} - -.navpath li.navelem a -{ - height:32px; - display:block; - outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color: var(--footer-foreground-color); - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image: var(--header-gradient-image); - background-repeat:repeat-x; - background-color: var(--header-background-color); - margin: 0px; - border-bottom: 1px solid var(--header-separator-color); -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* - -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention, dl.important { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -*/ - -dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { - font-weight: bold !important; -} - -dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, -dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { - padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; -} - -dl.section dd { - margin-bottom: 2px; -} - -dl.warning, dl.attention, dl.important { - background: var(--warning-color-bg); - border-left: 8px solid var(--warning-color-hl); - color: var(--warning-color-text); -} - -dl.warning dt, dl.attention dt, dl.important dt { - color: var(--warning-color-hl); -} - -dl.note, dl.remark { - background: var(--note-color-bg); - border-left: 8px solid var(--note-color-hl); - color: var(--note-color-text); -} - -dl.note dt, dl.remark dt { - color: var(--note-color-hl); -} - -dl.todo { - background: var(--todo-color-bg); - border-left: 8px solid var(--todo-color-hl); - color: var(--todo-color-text); -} - -dl.todo dt { - color: var(--todo-color-hl); -} - -dl.test { - background: var(--test-color-bg); - border-left: 8px solid var(--test-color-hl); - color: var(--test-color-text); -} - -dl.test dt { - color: var(--test-color-hl); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.bug { - background: var(--bug-color-bg); - border-left: 8px solid var(--bug-color-hl); - color: var(--bug-color-text); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.deprecated { - background: var(--deprecated-color-bg); - border-left: 8px solid var(--deprecated-color-hl); - color: var(--deprecated-color-text); -} - -dl.deprecated dt a { - color: var(--deprecated-color-hl) !important; -} - -dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, -dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, -dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { - margin-inline-start: 0px; -} - -dl.invariant, dl.pre, dl.post { - background: var(--invariant-color-bg); - border-left: 8px solid var(--invariant-color-hl); - color: var(--invariant-color-text); -} - -dl.invariant dt, dl.pre dt, dl.post dt { - color: var(--invariant-color-hl); -} - - -#projectrow -{ - height: 56px; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; - padding-left: 0.5em; -} - -#projectname -{ - font-size: 200%; - font-family: var(--font-family-title); - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-size: 90%; - font-family: var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font-size: 50%; - font-family: 50% var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 15px; -} - -div.toc li.level4 { - margin-left: 15px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - -.inherit_header { - font-weight: bold; - color: var(--inherit-header-color); - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); - border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: var(--tooltip-doc-color); - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip a { - color: var(--tooltip-link-color); -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: var(--tooltip-declaration-color); -} - -#powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); - line-height: 16px; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -tt, code, kbd, samp -{ - display: inline-block; -} -/* @end */ - -u { - text-decoration: underline; -} - -details>summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; -} - -details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; -} - -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/docs/manual/doxygen.svg b/docs/manual/doxygen.svg deleted file mode 100644 index 79a7635..0000000 --- a/docs/manual/doxygen.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/doxygen_crawl.html b/docs/manual/doxygen_crawl.html deleted file mode 100644 index 4a3b72e..0000000 --- a/docs/manual/doxygen_crawl.html +++ /dev/null @@ -1,163 +0,0 @@ - - - -Validator / crawler helper - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/dynsections.js b/docs/manual/dynsections.js deleted file mode 100644 index 8985f42..0000000 --- a/docs/manual/dynsections.js +++ /dev/null @@ -1,205 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ - -function toggleVisibility(linkObj) { - return dynsection.toggleVisibility(linkObj); -} - -let dynsection = { - - // helper function - updateStripes : function() { - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); - }, - - toggleVisibility : function(linkObj) { - const base = $(linkObj).attr('id'); - const summary = $('#'+base+'-summary'); - const content = $('#'+base+'-content'); - const trigger = $('#'+base+'-trigger'); - const src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; - }, - - toggleLevel : function(level) { - $('table.directory tr').each(function() { - const l = this.id.split('_').length-1; - const i = $('#img'+this.id.substring(3)); - const a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - const id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - const start = $(this).attr('data-start'); - const end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - const line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); - }, -}; -/* @license-end */ -$(function() { - $('.code,.codeRef').each(function() { - $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); - $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; - $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); - }); -}); diff --git a/docs/manual/files.html b/docs/manual/files.html deleted file mode 100644 index 00e561b..0000000 --- a/docs/manual/files.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -BayesNet: File List - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    File List
    -
    -
    -
    Here is a list of all documented files with brief descriptions:
    -
    [detail level 123]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      bayesnet
      classifiers
     Classifier.cc
     Classifier.h
     KDB.cc
     KDB.h
     KDBLd.cc
     KDBLd.h
     Proposal.cc
     Proposal.h
     SPnDE.cc
     SPnDE.h
     SPODE.cc
     SPODE.h
     SPODELd.cc
     SPODELd.h
     TAN.cc
     TAN.h
     TANLd.cc
     TANLd.h
      ensembles
     A2DE.cc
     A2DE.h
     AODE.cc
     AODE.h
     AODELd.cc
     AODELd.h
     Boost.cc
     Boost.h
     BoostA2DE.cc
     BoostA2DE.h
     BoostAODE.cc
     BoostAODE.h
     Ensemble.cc
     Ensemble.h
      network
     Network.cc
     Network.h
     Node.cc
     Node.h
     BaseClassifier.h
    -
    -
    -
    - - - - diff --git a/docs/manual/files_dup.js b/docs/manual/files_dup.js deleted file mode 100644 index 3a9b985..0000000 --- a/docs/manual/files_dup.js +++ /dev/null @@ -1,4 +0,0 @@ -var files_dup = -[ - [ "bayesnet", "dir_40070fdff85d618b4d1d3ab4ac4f79bb.html", "dir_40070fdff85d618b4d1d3ab4ac4f79bb" ] -]; \ No newline at end of file diff --git a/docs/manual/folderclosed.svg b/docs/manual/folderclosed.svg deleted file mode 100644 index b04bed2..0000000 --- a/docs/manual/folderclosed.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/docs/manual/folderclosedd.svg b/docs/manual/folderclosedd.svg deleted file mode 100644 index 52f0166..0000000 --- a/docs/manual/folderclosedd.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/docs/manual/folderopen.svg b/docs/manual/folderopen.svg deleted file mode 100644 index f6896dd..0000000 --- a/docs/manual/folderopen.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/docs/manual/folderopend.svg b/docs/manual/folderopend.svg deleted file mode 100644 index 2d1f06e..0000000 --- a/docs/manual/folderopend.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/manual/graph_legend.html b/docs/manual/graph_legend.html deleted file mode 100644 index 46efc2c..0000000 --- a/docs/manual/graph_legend.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -BayesNet: Graph Legend - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Graph Legend
    -
    -
    -

    This page explains how to interpret the graphs that are generated by doxygen.

    -

    Consider the following example:

    /*! Invisible class because of truncation */
    -
    class Invisible { };
    -
    -
    /*! Truncated class, inheritance relation is hidden */
    -
    class Truncated : public Invisible { };
    -
    -
    /* Class not documented with doxygen comments */
    -
    class Undocumented { };
    -
    -
    /*! Class that is inherited using public inheritance */
    -
    class PublicBase : public Truncated { };
    -
    -
    /*! A template class */
    -
    template<class T> class Templ { };
    -
    -
    /*! Class that is inherited using protected inheritance */
    -
    class ProtectedBase { };
    -
    -
    /*! Class that is inherited using private inheritance */
    -
    class PrivateBase { };
    -
    -
    /*! Class that is used by the Inherited class */
    -
    class Used { };
    -
    -
    /*! Super class that inherits a number of other classes */
    -
    class Inherited : public PublicBase,
    -
    protected ProtectedBase,
    -
    private PrivateBase,
    -
    public Undocumented,
    -
    public Templ<int>
    -
    {
    -
    private:
    -
    Used *m_usedClass;
    -
    };
    -

    This will result in the following graph:

    -

    The boxes in the above graph have the following meaning:

    -
      -
    • -A filled gray box represents the struct or class for which the graph is generated.
    • -
    • -A box with a black border denotes a documented struct or class.
    • -
    • -A box with a gray border denotes an undocumented struct or class.
    • -
    • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
    • -
    -

    The arrows have the following meaning:

    -
      -
    • -A blue arrow is used to visualize a public inheritance relation between two classes.
    • -
    • -A dark green arrow is used for protected inheritance.
    • -
    • -A dark red arrow is used for private inheritance.
    • -
    • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • -
    • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    • -
    -
    -
    - - - - diff --git a/docs/manual/graph_legend.md5 b/docs/manual/graph_legend.md5 deleted file mode 100644 index da515da..0000000 --- a/docs/manual/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/docs/manual/graph_legend.png b/docs/manual/graph_legend.png deleted file mode 100644 index 9f80d23298cbb09d18a9d504e2f1a7d4f0a17cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22891 zcmb5W1yq$$7cEK%f`o*0mq>S~Qc8m$BHi8HAl-tblypgVBi*Ugp}V{D?c@L7JKlKr zzWc@-j)8~cIp4SU+H1`<*Ier}R8d|E?FHcr7#J9|5AVg5VPN30!0Ra_MDX(k(=r

    9>#sC`%WH4X)TW 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 diff --git a/docs/manual/hierarchy.html b/docs/manual/hierarchy.html deleted file mode 100644 index 5b7dbca..0000000 --- a/docs/manual/hierarchy.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -BayesNet: Class Hierarchy - - - - - - - - - - - - - - - -

    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Class Hierarchy
    -
    - -
    - - - - diff --git a/docs/manual/hierarchy.js b/docs/manual/hierarchy.js deleted file mode 100644 index 5202a5c..0000000 --- a/docs/manual/hierarchy.js +++ /dev/null @@ -1,34 +0,0 @@ -var hierarchy = -[ - [ "bayesnet::BaseClassifier", "classbayesnet_1_1_base_classifier.html", [ - [ "bayesnet::Classifier", "classbayesnet_1_1_classifier.html", [ - [ "bayesnet::Ensemble", "classbayesnet_1_1_ensemble.html", [ - [ "bayesnet::A2DE", "classbayesnet_1_1_a2_d_e.html", null ], - [ "bayesnet::AODE", "classbayesnet_1_1_a_o_d_e.html", null ], - [ "bayesnet::AODELd", "classbayesnet_1_1_a_o_d_e_ld.html", null ], - [ "bayesnet::Boost", "classbayesnet_1_1_boost.html", [ - [ "bayesnet::BoostA2DE", "classbayesnet_1_1_boost_a2_d_e.html", null ], - [ "bayesnet::BoostAODE", "classbayesnet_1_1_boost_a_o_d_e.html", null ] - ] ] - ] ], - [ "bayesnet::KDB", "classbayesnet_1_1_k_d_b.html", [ - [ "bayesnet::KDBLd", "classbayesnet_1_1_k_d_b_ld.html", null ] - ] ], - [ "bayesnet::SPODE", "classbayesnet_1_1_s_p_o_d_e.html", [ - [ "bayesnet::SPODELd", "classbayesnet_1_1_s_p_o_d_e_ld.html", null ] - ] ], - [ "bayesnet::SPnDE", "classbayesnet_1_1_s_pn_d_e.html", null ], - [ "bayesnet::TAN", "classbayesnet_1_1_t_a_n.html", [ - [ "bayesnet::TANLd", "classbayesnet_1_1_t_a_n_ld.html", null ] - ] ] - ] ] - ] ], - [ "bayesnet::Network", "classbayesnet_1_1_network.html", null ], - [ "bayesnet::Node", "classbayesnet_1_1_node.html", null ], - [ "bayesnet::Proposal", "classbayesnet_1_1_proposal.html", [ - [ "bayesnet::AODELd", "classbayesnet_1_1_a_o_d_e_ld.html", null ], - [ "bayesnet::KDBLd", "classbayesnet_1_1_k_d_b_ld.html", null ], - [ "bayesnet::SPODELd", "classbayesnet_1_1_s_p_o_d_e_ld.html", null ], - [ "bayesnet::TANLd", "classbayesnet_1_1_t_a_n_ld.html", null ] - ] ] -]; \ No newline at end of file diff --git a/docs/manual/index.html b/docs/manual/index.html deleted file mode 100644 index fe22924..0000000 --- a/docs/manual/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -BayesNet: Main Page - - - - - - - - - - - - - - - -
    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    BayesNet Documentation
    -
    -
    - -
    -
    - - - - diff --git a/docs/manual/inherit_graph_0.map b/docs/manual/inherit_graph_0.map deleted file mode 100644 index d8b0322..0000000 --- a/docs/manual/inherit_graph_0.map +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/manual/inherit_graph_0.md5 b/docs/manual/inherit_graph_0.md5 deleted file mode 100644 index 6b3e630..0000000 --- a/docs/manual/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -1a07b7de87ded37a8a348204931028c0 \ No newline at end of file diff --git a/docs/manual/inherit_graph_0.png b/docs/manual/inherit_graph_0.png deleted file mode 100644 index e413ba93aa4d7569bc4b68876f171b64ca2aa0e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44422 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

    $m`d; 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

    %EN?MJq!uD5qampET`;>AHOfvigEA(d3=LUu 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 diff --git a/docs/manual/inherit_graph_1.map b/docs/manual/inherit_graph_1.map deleted file mode 100644 index c129322..0000000 --- a/docs/manual/inherit_graph_1.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/manual/inherit_graph_1.md5 b/docs/manual/inherit_graph_1.md5 deleted file mode 100644 index ed1e310..0000000 --- a/docs/manual/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -65918d135faed85a5d80296a021b4cf3 \ No newline at end of file diff --git a/docs/manual/inherit_graph_1.png b/docs/manual/inherit_graph_1.png deleted file mode 100644 index f36291a4f90163f7ced46ce456a2073db38fb6bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2310 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 diff --git a/docs/manual/inherit_graph_2.map b/docs/manual/inherit_graph_2.map deleted file mode 100644 index 6791d6e..0000000 --- a/docs/manual/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/manual/inherit_graph_2.md5 b/docs/manual/inherit_graph_2.md5 deleted file mode 100644 index 81f8e6e..0000000 --- a/docs/manual/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -75f111cd5e54a47afb7579e7ca08bb41 \ No newline at end of file diff --git a/docs/manual/inherit_graph_2.png b/docs/manual/inherit_graph_2.png deleted file mode 100644 index 9b58930bddb0bf915ff834db73eee358fa311888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 zcmVFq zNF>@S5{YjAd$t4?kpBR<^K)TB;NxUxXD_%LfrTSBHg?jw_+R!Ru*e93FENC`ml#6e zOAI0KC590A6622pfA{Vkl9H0YqLP7$rUcEY@o}ZtO+qdWTXN>&(d=wWK|EaZU z`QyO5ySs7o=FR!=vZ#1?c%Z7PYS!yBGcyqv7l)@$pBmL4Ja~Xdj~>m*Lv?jEYHDic zw0E}5>qq*)zyQ8{`7-I;=g*%(^0zfL8V&S%{e-$+uSa)x_mum_#>Sx0XlAY1-`@|N zPWM~h+}+&~8ykz!(a~wwkwjZt8-|C6C!HS}8k%zNRQEqu<|Xja(NU;WD#&Cq*x1-$ z-@bj&YPA4>%F0T(xw*mB)fFM`g(YJdcwiM z0d{tFNJ&XCe8Z%sro!3T8LqCbaCCG;b#*m>AMM4;$_iJmT!B<7g`J%pwr}5#fq{W( zH8*bDh@PGv?A^N;H*VYj0HmjMkapn!V4o?TsCw6wHjU0ogT+_^(rTU+XMI+A2%WhJew ztT;S8%&%X+QZASC^y$+a92{g@TN|C7otd4T&F1E2+Su4oqtQ^O)A8K7bKJUhD@n4s zxtRbM78XXWR?FJjTFPWH-nw;bT1}E%v0?=)Dk=>3RZ&sFjEsya$0jBwtg5Qw-Me>b zVPV16)>e{aR8$mIDiukxv$K;DiG*ckWhBY2t}Z$|JM+?|OB@;+qC_HLT3Q-48Vz%D zatMHliHS3MoeeQDF^rCm4qLFmTUuHSwUZ}L(%ajcV`F1{{rWZadOdr3dRSFeMSFXD z=H=yaczBprR#t|G9336a!-o%(By)3fX=i6gwOUQBR!gl`%jD!_?%cVPZ{NP9nVA{W z)6@Ck!w2g1dVc%%%_#8khfk8Bp`ko=>eRHFJUR62s}XrKJU0trqLouQ$4m zr>7^@u3d|qoE%)ZZ~;k4N$~LSKx%3#LPJ9h>y|HHZunXvkwB-@O{@8*WMyT+-QC^L zj>c(iZH14Ik5NsbP@t%&2oE1Vgs-o!(cJjjh4eZvf%o?IVq|0lrlzI=4sGKHm&V3M6c-mG zJUkq2ZEdizv4N|rD*&LRqy#N3Ert;M{QO{UZjOY61Vlzg8iLxfV+Yh~HS+TEKoafk z?Fb4ALP0?R>gwtc5)y*`{(eZMQUnDB&FU08ohAU7nwlC8cK}dRQ-l2c{3*x35*HT- zCnqP|yLZn}+r4`?UcP*Zva&J&KYkM^FE2-UcsPQCgYoLsD-;$Mf+QY4evJD1`dN9M zSLV{gSFc{ppr9biWHO4yVn#+rQm4~#WMqVXetwinrBo;sjEIO}OiT>raydIYJ4upB zNl662H*ek;>E`9-(Za%lD_5?hsi`TWqN4cy`*)6xj?&lHmu6;W^z!nei;D}dUAso| zpB_Hm(@8QSB7%vDiPLJ5ZcGwA#}{<(*b)7aQZ6B83d4=2g= z^mLk-n9#+=g;rKpjE#-u$jAsuGA%8QVzHQVxtwd(tYKtip5x8gtfIbyuH0Aos&wX zkV>VK&Q0fat}NQillJy@#K*_u=+UDH4h~){8%vIP{R#galu9LPYik$l@=F%s_2?2q z2z-el1ir)&{x5xrF(GiVSlpr4>kI4Z>K4O~z&s)ri#ujsB_JRmARr*{H}F5M@Tq0W S8KN8j0000 - - - - - - -BayesNet: Class Hierarchy - - - - - - - - - - - - - - - -

    -
    - - - - - - - -
    -
    BayesNet 1.0.5 -
    -
    Bayesian Network Classifiers using libtorch from scratch
    -
    -
    - - - - - - - - -
    -
    - -
    -
    -
    - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Class Hierarchy
    -
    -
    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    -
    -
    - - - - diff --git a/docs/manual/jquery.js b/docs/manual/jquery.js deleted file mode 100644 index 1dffb65..0000000 --- a/docs/manual/jquery.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/manual/logo_small.png b/docs/manual/logo_small.png deleted file mode 100644 index 33030fb11384d32caec8eaba448fd38584424a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10855 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'+ - data.children[i].text+''+ - makeTree(data.children[i],relPath)+''; - } - result+=''; - } - return result; - } - let searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
    '+ - '
    '+ - '
     '+ - ''+ - '
    '+ - '
    '+ - '
    '+ - '
    '; - } else { - searchBoxHtml='
    '+ - ''+ - ' '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
    '; - } - } - - $('#main-nav').before('
    '+ - ''+ - ''+ - '
    '); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBoxHtml) { - $('#main-menu').append('
  • '); - } - const $mainMenuState = $('#main-menu-state'); - let prevWidth = 0; - if ($mainMenuState.length) { - const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(treeview); - } - // animate mobile menu - $mainMenuState.change(function() { - const $menu = $('#main-menu'); - let options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = () => $menu.css('display', 'block'); - $menu.hide().slideDown(options); - } else { - options['complete'] = () => $menu.css('display', 'none'); - $menu.show().slideUp(options); - } - }); - // set default menu visibility - const resetState = function() { - const $menu = $('#main-menu'); - const newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); - } - if (typeof searchBox!=='undefined') { - searchBox.CloseResultsWindow(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/docs/manual/menudata.js b/docs/manual/menudata.js deleted file mode 100644 index 1cdd58f..0000000 --- a/docs/manual/menudata.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}]}]} diff --git a/docs/manual/minus.svg b/docs/manual/minus.svg deleted file mode 100644 index f70d0c1..0000000 --- a/docs/manual/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/manual/minusd.svg b/docs/manual/minusd.svg deleted file mode 100644 index 5f8e879..0000000 --- a/docs/manual/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/manual/nav_f.png b/docs/manual/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/docs/manual/nav_fd.png b/docs/manual/nav_fd.png deleted file mode 100644 index 032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S diff --git a/docs/manual/nav_g.png b/docs/manual/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} diff --git a/docs/manual/navtree.css b/docs/manual/navtree.css deleted file mode 100644 index 69211d4..0000000 --- a/docs/manual/navtree.css +++ /dev/null @@ -1,149 +0,0 @@ -#nav-tree .children_ul { - margin:0; - padding:4px; -} - -#nav-tree ul { - list-style:none outside none; - margin:0px; - padding:0px; -} - -#nav-tree li { - white-space:nowrap; - margin:0px; - padding:0px; -} - -#nav-tree .plus { - margin:0px; -} - -#nav-tree .selected { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: var(--nav-text-active-color); - text-shadow: var(--nav-text-active-shadow); -} - -#nav-tree .selected .arrow { - color: var(--nav-arrow-selected-color); - text-shadow: none; -} - -#nav-tree img { - margin:0px; - padding:0px; - border:0px; - vertical-align: middle; -} - -#nav-tree a { - text-decoration:none; - padding:0px; - margin:0px; -} - -#nav-tree .label { - margin:0px; - padding:0px; - font: 12px var(--font-family-nav); -} - -#nav-tree .label a { - padding:2px; -} - -#nav-tree .selected a { - text-decoration:none; - color:var(--nav-text-active-color); -} - -#nav-tree .children_ul { - margin:0px; - padding:0px; -} - -#nav-tree .item { - margin:0px; - padding:0px; -} - -#nav-tree { - padding: 0px 0px; - font-size:14px; - overflow:auto; -} - -#doc-content { - overflow:auto; - display:block; - padding:0px; - margin:0px; - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#side-nav { - padding:0 6px 0 0; - margin: 0px; - display:block; - position: absolute; - left: 0px; - width: $width; - overflow : hidden; -} - -.ui-resizable .ui-resizable-handle { - display:block; -} - -.ui-resizable-e { - background-image:var(--nav-splitbar-image); - background-size:100%; - background-repeat:repeat-y; - background-attachment: scroll; - cursor:ew-resize; - height:100%; - right:0; - top:0; - width:6px; -} - -.ui-resizable-handle { - display:none; - font-size:0.1px; - position:absolute; - z-index:1; -} - -#nav-tree-contents { - margin: 6px 0px 0px 0px; -} - -#nav-tree { - background-repeat:repeat-x; - background-color: var(--nav-background-color); - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#nav-sync { - position:absolute; - top:5px; - right:24px; - z-index:0; -} - -#nav-sync img { - opacity:0.3; -} - -#nav-sync img:hover { - opacity:0.9; -} - -@media print -{ - #nav-tree { display: none; } - div.ui-resizable-handle { display: none; position: relative; } -} - diff --git a/docs/manual/navtree.js b/docs/manual/navtree.js deleted file mode 100644 index 9027ce6..0000000 --- a/docs/manual/navtree.js +++ /dev/null @@ -1,483 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ - -function initNavTree(toroot,relpath) { - let navTreeSubIndices = []; - const ARROW_DOWN = '▼'; - const ARROW_RIGHT = '►'; - const NAVPATH_COOKIE_NAME = ''+'navpath'; - - const getData = function(varName) { - const i = varName.lastIndexOf('/'); - const n = i>=0 ? varName.substring(i+1) : varName; - return eval(n.replace(/-/g,'_')); - } - - const stripPath = function(uri) { - return uri.substring(uri.lastIndexOf('/')+1); - } - - const stripPath2 = function(uri) { - const i = uri.lastIndexOf('/'); - const s = uri.substring(i+1); - const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); - return m ? uri.substring(i-6) : s; - } - - const hashValue = function() { - return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); - } - - const hashUrl = function() { - return '#'+hashValue(); - } - - const pathName = function() { - return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); - } - - const storeLink = function(link) { - if (!$("#nav-sync").hasClass('sync')) { - Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); - } - } - - const deleteLink = function() { - Cookie.eraseSetting(NAVPATH_COOKIE_NAME); - } - - const cachedLink = function() { - return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); - } - - const getScript = function(scriptName,func) { - const head = document.getElementsByTagName("head")[0]; - const script = document.createElement('script'); - script.id = scriptName; - script.type = 'text/javascript'; - script.onload = func; - script.src = scriptName+'.js'; - head.appendChild(script); - } - - const createIndent = function(o,domNode,node) { - let level=-1; - let n = node; - while (n.parentNode) { level++; n=n.parentNode; } - if (node.childrenData) { - const imgNode = document.createElement("span"); - imgNode.className = 'arrow'; - imgNode.style.paddingLeft=(16*level).toString()+'px'; - imgNode.innerHTML=ARROW_RIGHT; - node.plus_img = imgNode; - node.expandToggle = document.createElement("a"); - node.expandToggle.href = "javascript:void(0)"; - node.expandToggle.onclick = function() { - if (node.expanded) { - $(node.getChildrenUL()).slideUp("fast"); - node.plus_img.innerHTML=ARROW_RIGHT; - node.expanded = false; - } else { - expandNode(o, node, false, true); - } - } - node.expandToggle.appendChild(imgNode); - domNode.appendChild(node.expandToggle); - } else { - let span = document.createElement("span"); - span.className = 'arrow'; - span.style.width = 16*(level+1)+'px'; - span.innerHTML = ' '; - domNode.appendChild(span); - } - } - - let animationInProgress = false; - - const gotoAnchor = function(anchor,aname) { - let pos, docContent = $('#doc-content'); - let ancParent = $(anchor.parent()); - if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || - ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || - ancParent.is(':header')) { - pos = ancParent.position().top; - } else if (anchor.position()) { - pos = anchor.position().top; - } - if (pos) { - const dcOffset = docContent.offset().top; - const dcHeight = docContent.height(); - const dcScrHeight = docContent[0].scrollHeight - const dcScrTop = docContent.scrollTop(); - let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); - animationInProgress = true; - docContent.animate({ - scrollTop: pos + dcScrTop - dcOffset - },Math.max(50,Math.min(500,dist)),function() { - animationInProgress=false; - if (anchor.parent().attr('class')=='memItemLeft') { - let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); - glowEffect(rows.children(),300); // member without details - } else if (anchor.parent().attr('class')=='fieldname') { - glowEffect(anchor.parent().parent(),1000); // enum value - } else if (anchor.parent().attr('class')=='fieldtype') { - glowEffect(anchor.parent().parent(),1000); // struct field - } else if (anchor.parent().is(":header")) { - glowEffect(anchor.parent(),1000); // section header - } else { - glowEffect(anchor.next(),1000); // normal member - } - }); - } - } - - const newNode = function(o, po, text, link, childrenData, lastNode) { - const node = { - children : [], - childrenData : childrenData, - depth : po.depth + 1, - relpath : po.relpath, - isLast : lastNode, - li : document.createElement("li"), - parentNode : po, - itemDiv : document.createElement("div"), - labelSpan : document.createElement("span"), - label : document.createTextNode(text), - expanded : false, - childrenUL : null, - getChildrenUL : function() { - if (!this.childrenUL) { - this.childrenUL = document.createElement("ul"); - this.childrenUL.className = "children_ul"; - this.childrenUL.style.display = "none"; - this.li.appendChild(node.childrenUL); - } - return node.childrenUL; - }, - }; - - node.itemDiv.className = "item"; - node.labelSpan.className = "label"; - createIndent(o,node.itemDiv,node); - node.itemDiv.appendChild(node.labelSpan); - node.li.appendChild(node.itemDiv); - - const a = document.createElement("a"); - node.labelSpan.appendChild(a); - po.getChildrenUL().appendChild(node.li); - a.appendChild(node.label); - if (link) { - let url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - link = url; - } else { - url = node.relpath+link; - } - a.className = stripPath(link.replace('#',':')); - if (link.indexOf('#')!=-1) { - const aname = '#'+link.split('#')[1]; - const srcPage = stripPath(pathName()); - const targetPage = stripPath(link.split('#')[0]); - a.href = srcPage!=targetPage ? url : aname; - a.onclick = function() { - storeLink(link); - aPPar = $(a).parent().parent(); - if (!aPPar.hasClass('selected')) { - $('.item').removeClass('selected'); - $('.item').removeAttr('id'); - aPPar.addClass('selected'); - aPPar.attr('id','selected'); - } - const anchor = $(aname); - gotoAnchor(anchor,aname); - }; - } else { - a.href = url; - a.onclick = () => storeLink(link); - } - } else if (childrenData != null) { - a.className = "nolink"; - a.href = "javascript:void(0)"; - a.onclick = node.expandToggle.onclick; - } - return node; - } - - const showRoot = function() { - const headerHeight = $("#top").height(); - const footerHeight = $("#nav-path").height(); - const windowHeight = $(window).height() - headerHeight - footerHeight; - (function() { // retry until we can scroll to the selected item - try { - const navtree=$('#nav-tree'); - navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); - } catch (err) { - setTimeout(arguments.callee, 0); - } - })(); - } - - const expandNode = function(o, node, imm, setFocus) { - if (node.childrenData && !node.expanded) { - if (typeof(node.childrenData)==='string') { - const varName = node.childrenData; - getScript(node.relpath+varName,function() { - node.childrenData = getData(varName); - expandNode(o, node, imm, setFocus); - }); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } - $(node.getChildrenUL()).slideDown("fast"); - node.plus_img.innerHTML = ARROW_DOWN; - node.expanded = true; - if (setFocus) { - $(node.expandToggle).focus(); - } - } - } - } - - const glowEffect = function(n,duration) { - n.addClass('glow').delay(duration).queue(function(next) { - $(this).removeClass('glow');next(); - }); - } - - const highlightAnchor = function() { - const aname = hashUrl(); - const anchor = $(aname); - gotoAnchor(anchor,aname); - } - - const selectAndHighlight = function(hash,n) { - let a; - if (hash) { - const link=stripPath(pathName())+':'+hash.substring(1); - a=$('.item a[class$="'+link+'"]'); - } - if (a && a.length) { - a.parent().parent().addClass('selected'); - a.parent().parent().attr('id','selected'); - highlightAnchor(); - } else if (n) { - $(n.itemDiv).addClass('selected'); - $(n.itemDiv).attr('id','selected'); - } - let topOffset=5; - if ($('#nav-tree-contents .item:first').hasClass('selected')) { - topOffset+=25; - } - $('#nav-sync').css('top',topOffset+'px'); - showRoot(); - } - - const showNode = function(o, node, index, hash) { - if (node && node.childrenData) { - if (typeof(node.childrenData)==='string') { - const varName = node.childrenData; - getScript(node.relpath+varName,function() { - node.childrenData = getData(varName); - showNode(o,node,index,hash); - }); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } - $(node.getChildrenUL()).css({'display':'block'}); - node.plus_img.innerHTML = ARROW_DOWN; - node.expanded = true; - const n = node.children[o.breadcrumbs[index]]; - if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; - } - if (hash.match(/^#l\d+$/)) { - const anchor=$('a[name='+hash.substring(1)+']'); - glowEffect(anchor.parent(),1000); // line number - hash=''; // strip line number anchors - } - const url=root+hash; - let i=-1; - while (NAVTREEINDEX[i+1]<=url) i++; - if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath) - } else { - getScript(relpath+'navtreeindex'+i,function() { - navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath); - } - }); - } - } - - const showSyncOff = function(n,relpath) { - n.html(''); - } - - const showSyncOn = function(n,relpath) { - n.html(''); - } - - const o = { - toroot : toroot, - node : { - childrenData : NAVTREE, - children : [], - childrenUL : document.createElement("ul"), - getChildrenUL : function() { return this.childrenUL }, - li : document.getElementById("nav-tree-contents"), - depth : 0, - relpath : relpath, - expanded : false, - isLast : true, - plus_img : document.createElement("span"), - }, - }; - o.node.li.appendChild(o.node.childrenUL); - o.node.plus_img.className = 'arrow'; - o.node.plus_img.innerHTML = ARROW_RIGHT; - - const navSync = $('#nav-sync'); - if (cachedLink()) { - showSyncOff(navSync,relpath); - navSync.removeClass('sync'); - } else { - showSyncOn(navSync,relpath); - } - - navSync.click(() => { - const navSync = $('#nav-sync'); - if (navSync.hasClass('sync')) { - navSync.removeClass('sync'); - showSyncOff(navSync,relpath); - storeLink(stripPath2(pathName())+hashUrl()); - } else { - navSync.addClass('sync'); - showSyncOn(navSync,relpath); - deleteLink(); - } - }); - - navTo(o,toroot,hashUrl(),relpath); - showRoot(); - - $(window).bind('hashchange', () => { - if (!animationInProgress) { - if (window.location.hash && window.location.hash.length>1) { - let a; - if ($(location).attr('hash')) { - const clslink=stripPath(pathName())+':'+hashValue(); - a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - - - diff --git a/docs/manual/plusd.svg b/docs/manual/plusd.svg deleted file mode 100644 index 0c65bfe..0000000 --- a/docs/manual/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/resize.js b/docs/manual/resize.js deleted file mode 100644 index 7d8cdc7..0000000 --- a/docs/manual/resize.js +++ /dev/null @@ -1,145 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ - -function initResizable(treeview) { - let sidenav,navtree,content,header,footer,barWidth=6; - const RESIZE_COOKIE_NAME = ''+'width'; - - function resizeWidth() { - const sidenavWidth = $(sidenav).outerWidth(); - content.css({marginLeft:parseInt(sidenavWidth)+"px"}); - if (typeof page_layout!=='undefined' && page_layout==1) { - footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); - } - Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); - } - - function restoreWidth(navWidth) { - content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); - if (typeof page_layout!=='undefined' && page_layout==1) { - footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); - } - sidenav.css({width:navWidth + "px"}); - } - - function resizeHeight(treeview) { - const headerHeight = header.outerHeight(); - const windowHeight = $(window).height(); - let contentHeight; - if (treeview) - { - const footerHeight = footer.outerHeight(); - let navtreeHeight,sideNavHeight; - if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ - contentHeight = windowHeight - headerHeight - footerHeight; - navtreeHeight = contentHeight; - sideNavHeight = contentHeight; - } else if (page_layout==1) { /* DISABLE_INDEX=YES */ - contentHeight = windowHeight - footerHeight; - navtreeHeight = windowHeight - headerHeight; - sideNavHeight = windowHeight; - } - navtree.css({height:navtreeHeight + "px"}); - sidenav.css({height:sideNavHeight + "px"}); - } - else - { - contentHeight = windowHeight - headerHeight; - } - content.css({height:contentHeight + "px"}); - if (location.hash.slice(1)) { - (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); - } - } - - function collapseExpand() { - let newWidth; - if (sidenav.width()>0) { - newWidth=0; - } else { - const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); - newWidth = (width>250 && width<$(window).width()) ? width : 250; - } - restoreWidth(newWidth); - const sidenavWidth = $(sidenav).outerWidth(); - Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); - } - - header = $("#top"); - content = $("#doc-content"); - footer = $("#nav-path"); - sidenav = $("#side-nav"); - if (!treeview) { -// title = $("#titlearea"); -// titleH = $(title).height(); -// let animating = false; -// content.on("scroll", function() { -// slideOpts = { duration: 200, -// step: function() { -// contentHeight = $(window).height() - header.outerHeight(); -// content.css({ height : contentHeight + "px" }); -// }, -// done: function() { animating=false; } -// }; -// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { -// title.slideUp(slideOpts); -// animating=true; -// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { -// title.slideDown(slideOpts); -// animating=true; -// } -// }); - } else { - navtree = $("#nav-tree"); - $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); - $(sidenav).resizable({ minWidth: 0 }); - } - $(window).resize(function() { resizeHeight(treeview); }); - if (treeview) - { - const device = navigator.userAgent.toLowerCase(); - const touch_device = device.match(/(iphone|ipod|ipad|android)/); - if (touch_device) { /* wider split bar for touch only devices */ - $(sidenav).css({ paddingRight:'20px' }); - $('.ui-resizable-e').css({ width:'20px' }); - $('#nav-sync').css({ right:'34px' }); - barWidth=20; - } - const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); - if (width) { restoreWidth(width); } else { resizeWidth(); } - } - resizeHeight(treeview); - const url = location.href; - const i=url.indexOf("#"); - if (i>=0) window.location.hash=url.substr(i); - const _preventDefault = function(evt) { evt.preventDefault(); }; - if (treeview) - { - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); - } - $(window).on('load',resizeHeight); -} -/* @license-end */ diff --git a/docs/manual/search/all_0.js b/docs/manual/search/all_0.js deleted file mode 100644 index dc433d2..0000000 --- a/docs/manual/search/all_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['a2de_0',['A2DE',['../classbayesnet_1_1_a2_d_e.html',1,'bayesnet']]], - ['aode_1',['AODE',['../classbayesnet_1_1_a_o_d_e.html',1,'bayesnet']]], - ['aodeld_2',['AODELd',['../classbayesnet_1_1_a_o_d_e_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_1.js b/docs/manual/search/all_1.js deleted file mode 100644 index 52180aa..0000000 --- a/docs/manual/search/all_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['baseclassifier_0',['BaseClassifier',['../classbayesnet_1_1_base_classifier.html',1,'bayesnet']]], - ['boost_1',['Boost',['../classbayesnet_1_1_boost.html',1,'bayesnet']]], - ['boosta2de_2',['BoostA2DE',['../classbayesnet_1_1_boost_a2_d_e.html',1,'bayesnet']]], - ['boostaode_3',['BoostAODE',['../classbayesnet_1_1_boost_a_o_d_e.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_2.js b/docs/manual/search/all_2.js deleted file mode 100644 index 6aed91c..0000000 --- a/docs/manual/search/all_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['classifier_0',['Classifier',['../classbayesnet_1_1_classifier.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_3.js b/docs/manual/search/all_3.js deleted file mode 100644 index f513172..0000000 --- a/docs/manual/search/all_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ensemble_0',['Ensemble',['../classbayesnet_1_1_ensemble.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_4.js b/docs/manual/search/all_4.js deleted file mode 100644 index 721cf82..0000000 --- a/docs/manual/search/all_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kdb_0',['KDB',['../classbayesnet_1_1_k_d_b.html',1,'bayesnet']]], - ['kdbld_1',['KDBLd',['../classbayesnet_1_1_k_d_b_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_5.js b/docs/manual/search/all_5.js deleted file mode 100644 index 5efa2bd..0000000 --- a/docs/manual/search/all_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['network_0',['Network',['../classbayesnet_1_1_network.html',1,'bayesnet']]], - ['node_1',['Node',['../classbayesnet_1_1_node.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_6.js b/docs/manual/search/all_6.js deleted file mode 100644 index 4e9c1ce..0000000 --- a/docs/manual/search/all_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['proposal_0',['Proposal',['../classbayesnet_1_1_proposal.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_7.js b/docs/manual/search/all_7.js deleted file mode 100644 index 3c7da60..0000000 --- a/docs/manual/search/all_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['spnde_0',['SPnDE',['../classbayesnet_1_1_s_pn_d_e.html',1,'bayesnet']]], - ['spode_1',['SPODE',['../classbayesnet_1_1_s_p_o_d_e.html',1,'bayesnet']]], - ['spodeld_2',['SPODELd',['../classbayesnet_1_1_s_p_o_d_e_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/all_8.js b/docs/manual/search/all_8.js deleted file mode 100644 index 59e0076..0000000 --- a/docs/manual/search/all_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['tan_0',['TAN',['../classbayesnet_1_1_t_a_n.html',1,'bayesnet']]], - ['tanld_1',['TANLd',['../classbayesnet_1_1_t_a_n_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_0.js b/docs/manual/search/classes_0.js deleted file mode 100644 index dc433d2..0000000 --- a/docs/manual/search/classes_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['a2de_0',['A2DE',['../classbayesnet_1_1_a2_d_e.html',1,'bayesnet']]], - ['aode_1',['AODE',['../classbayesnet_1_1_a_o_d_e.html',1,'bayesnet']]], - ['aodeld_2',['AODELd',['../classbayesnet_1_1_a_o_d_e_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_1.js b/docs/manual/search/classes_1.js deleted file mode 100644 index 52180aa..0000000 --- a/docs/manual/search/classes_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['baseclassifier_0',['BaseClassifier',['../classbayesnet_1_1_base_classifier.html',1,'bayesnet']]], - ['boost_1',['Boost',['../classbayesnet_1_1_boost.html',1,'bayesnet']]], - ['boosta2de_2',['BoostA2DE',['../classbayesnet_1_1_boost_a2_d_e.html',1,'bayesnet']]], - ['boostaode_3',['BoostAODE',['../classbayesnet_1_1_boost_a_o_d_e.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_2.js b/docs/manual/search/classes_2.js deleted file mode 100644 index 6aed91c..0000000 --- a/docs/manual/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['classifier_0',['Classifier',['../classbayesnet_1_1_classifier.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_3.js b/docs/manual/search/classes_3.js deleted file mode 100644 index f513172..0000000 --- a/docs/manual/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ensemble_0',['Ensemble',['../classbayesnet_1_1_ensemble.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_4.js b/docs/manual/search/classes_4.js deleted file mode 100644 index 721cf82..0000000 --- a/docs/manual/search/classes_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kdb_0',['KDB',['../classbayesnet_1_1_k_d_b.html',1,'bayesnet']]], - ['kdbld_1',['KDBLd',['../classbayesnet_1_1_k_d_b_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_5.js b/docs/manual/search/classes_5.js deleted file mode 100644 index 5efa2bd..0000000 --- a/docs/manual/search/classes_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['network_0',['Network',['../classbayesnet_1_1_network.html',1,'bayesnet']]], - ['node_1',['Node',['../classbayesnet_1_1_node.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_6.js b/docs/manual/search/classes_6.js deleted file mode 100644 index 4e9c1ce..0000000 --- a/docs/manual/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['proposal_0',['Proposal',['../classbayesnet_1_1_proposal.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_7.js b/docs/manual/search/classes_7.js deleted file mode 100644 index 3c7da60..0000000 --- a/docs/manual/search/classes_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['spnde_0',['SPnDE',['../classbayesnet_1_1_s_pn_d_e.html',1,'bayesnet']]], - ['spode_1',['SPODE',['../classbayesnet_1_1_s_p_o_d_e.html',1,'bayesnet']]], - ['spodeld_2',['SPODELd',['../classbayesnet_1_1_s_p_o_d_e_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/classes_8.js b/docs/manual/search/classes_8.js deleted file mode 100644 index 59e0076..0000000 --- a/docs/manual/search/classes_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['tan_0',['TAN',['../classbayesnet_1_1_t_a_n.html',1,'bayesnet']]], - ['tanld_1',['TANLd',['../classbayesnet_1_1_t_a_n_ld.html',1,'bayesnet']]] -]; diff --git a/docs/manual/search/close.svg b/docs/manual/search/close.svg deleted file mode 100644 index 337d6cc..0000000 --- a/docs/manual/search/close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/docs/manual/search/mag.svg b/docs/manual/search/mag.svg deleted file mode 100644 index ffb6cf0..0000000 --- a/docs/manual/search/mag.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/manual/search/mag_d.svg b/docs/manual/search/mag_d.svg deleted file mode 100644 index 4122773..0000000 --- a/docs/manual/search/mag_d.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/manual/search/mag_sel.svg b/docs/manual/search/mag_sel.svg deleted file mode 100644 index 553dba8..0000000 --- a/docs/manual/search/mag_sel.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/search/mag_seld.svg b/docs/manual/search/mag_seld.svg deleted file mode 100644 index c906f84..0000000 --- a/docs/manual/search/mag_seld.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/manual/search/search.css b/docs/manual/search/search.css deleted file mode 100644 index 19f76f9..0000000 --- a/docs/manual/search/search.css +++ /dev/null @@ -1,291 +0,0 @@ -/*---------------- Search Box positioning */ - -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search box styling */ - -.SRPage * { - font-weight: normal; - line-height: normal; -} - -dark-mode-toggle { - margin-left: 5px; - display: flex; - float: right; -} - -#MSearchBox { - display: inline-block; - white-space : nowrap; - background: var(--search-background-color); - border-radius: 0.65em; - box-shadow: var(--search-box-shadow); - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - width: 20px; - height: 19px; - background-image: var(--search-magnification-select-image); - margin: 0 0 0 0.3em; - padding: 0; -} - -#MSearchSelectExt { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 19px; - background-image: var(--search-magnification-image); - margin: 0 0 0 0.5em; - padding: 0; -} - - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: var(--search-foreground-color); - outline: none; - font-family: var(--font-family-search); - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } -} - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: var(--search-active-color); -} - - - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt var(--font-family-search); - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: var(--font-family-monospace); - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: var(--search-filter-foreground-color); - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: var(--search-filter-foreground-color); - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - /*width: 60ex;*/ - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); - z-index:10000; - width: 300px; - height: 400px; - overflow: auto; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -div.SRPage { - margin: 5px 2px; - background-color: var(--search-results-background-color); -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - font-size: 8pt; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: var(--font-family-search); -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: var(--font-family-search); -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/manual/search/search.js b/docs/manual/search/search.js deleted file mode 100644 index 666af01..0000000 --- a/docs/manual/search/search.js +++ /dev/null @@ -1,694 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -const SEARCH_COOKIE_NAME = ''+'search_grp'; - -const searchResults = new SearchResults(); - -/* A class handling everything associated with the search panel. - - Parameters: - name - The name of the global variable that will be - storing this instance. Is needed to be able to set timeouts. - resultPath - path to use for external files -*/ -function SearchBox(name, resultsPath, extension) { - if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } - if (!extension || extension == "") { extension = ".html"; } - - function getXPos(item) { - let x = 0; - if (item.offsetWidth) { - while (item && item!=document.body) { - x += item.offsetLeft; - item = item.offsetParent; - } - } - return x; - } - - function getYPos(item) { - let y = 0; - if (item.offsetWidth) { - while (item && item!=document.body) { - y += item.offsetTop; - item = item.offsetParent; - } - } - return y; - } - - // ---------- Instance variables - this.name = name; - this.resultsPath = resultsPath; - this.keyTimeout = 0; - this.keyTimeoutLength = 500; - this.closeSelectionTimeout = 300; - this.lastSearchValue = ""; - this.lastResultsPage = ""; - this.hideTimeout = 0; - this.searchIndex = 0; - this.searchActive = false; - this.extension = extension; - - // ----------- DOM Elements - - this.DOMSearchField = () => document.getElementById("MSearchField"); - this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); - this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); - this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); - this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); - this.DOMSearchClose = () => document.getElementById("MSearchClose"); - this.DOMSearchBox = () => document.getElementById("MSearchBox"); - - // ------------ Event Handlers - - // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) { - this.Activate(isActive); - } - - this.OnSearchSelectShow = function() { - const searchSelectWindow = this.DOMSearchSelectWindow(); - const searchField = this.DOMSearchSelect(); - - const left = getXPos(searchField); - const top = getYPos(searchField) + searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - - // stop selection hide timer - if (this.hideTimeout) { - clearTimeout(this.hideTimeout); - this.hideTimeout=0; - } - return false; // to avoid "image drag" default event - } - - this.OnSearchSelectHide = function() { - this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), - this.closeSelectionTimeout); - } - - // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) { - if (this.keyTimeout) { // kill running timer - clearTimeout(this.keyTimeout); - this.keyTimeout = 0; - } - - const e = evt ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) { - if (e.shiftKey==1) { - this.OnSearchSelectShow(); - const win=this.DOMSearchSelectWindow(); - for (let i=0;i do a search - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) { // Up - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } else if (e.keyCode==13 || e.keyCode==27) { - e.stopPropagation(); - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() { - this.keyTimeout = 0; - - // strip leading whitespace - const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - const code = searchValue.toLowerCase().charCodeAt(0); - let idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair - idxChar = searchValue.substr(0, 2); - } - - let jsFile; - let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) { - const hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; - } - - const loadJS = function(url, impl, loc) { - const scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = impl; - scriptTag.onreadystatechange = impl; - loc.appendChild(scriptTag); - } - - const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - const domSearchBox = this.DOMSearchBox(); - const domPopupSearchResults = this.DOMPopupSearchResults(); - const domSearchClose = this.DOMSearchClose(); - const resultsPath = this.resultsPath; - - const handleResults = function() { - document.getElementById("Loading").style.display="none"; - if (typeof searchData !== 'undefined') { - createResults(resultsPath); - document.getElementById("NoMatches").style.display="none"; - } - - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') { - domSearchClose.style.display = 'inline-block'; - let left = getXPos(domSearchBox) + 150; - let top = getYPos(domSearchBox) + 20; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - const maxWidth = document.body.clientWidth; - const maxHeight = document.body.clientHeight; - let width = 300; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - let height = 400; - if (height+top+8>maxHeight) height=maxHeight-top-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResultsWindow.style.height = height + 'px'; - } - } - - if (jsFile) { - loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); - } else { - handleResults(); - } - - this.lastSearchValue = searchValue; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) { - this.DOMSearchBox().className = 'MSearchBoxActive'; - this.searchActive = true; - } else if (!isActive) { // directly remove the panel - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - this.DOMSearchField().value = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults() { - - function convertToId(search) { - let result = ''; - for (let i=0;i. - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) { - const parentElement = document.getElementById(id); - let element = parentElement.firstChild; - - while (element && element!=parentElement) { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { - element = element.firstChild; - } else if (element.nextSibling) { - element = element.nextSibling; - } else { - do { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) { - const element = this.FindChildElement(id); - if (element) { - if (element.style.display == 'block') { - element.style.display = 'none'; - } else { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) { - if (!search) { // get search word from URL - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - const resultRows = document.getElementsByTagName("div"); - let matches = 0; - - let i = 0; - while (i < resultRows.length) { - const row = resultRows.item(i); - if (row.className == "SRResult") { - let rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) { - row.style.display = 'block'; - matches++; - } else { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) { // no results - document.getElementById("NoMatches").style.display='block'; - } else { // at least one result - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) { - if (e.type == "keydown") { - this.repeatOn = false; - this.lastKey = e.keyCode; - } else if (e.type == "keypress") { - if (!this.repeatOn) { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } else if (e.type == "keyup") { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - const newIndex = itemIndex-1; - let focusItem = this.NavPrev(newIndex); - if (focusItem) { - let child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') { // children visible - let n=0; - let tmpElem; - for (;;) { // search for last child - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) { - focusItem = tmpElem; - } else { // found it! - break; - } - n++; - } - } - } - if (focusItem) { - focusItem.focus(); - } else { // return focus to search field - document.getElementById("MSearchField").focus(); - } - } else if (this.lastKey==40) { // Down - const newIndex = itemIndex+1; - let focusItem; - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') { // children visible - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } else if (this.lastKey==39) { // Right - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } else if (this.lastKey==37) { // Left - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - if (childIndex>0) { - const newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } else { // already at first child, jump to parent - document.getElementById('Item'+itemIndex).focus(); - } - } else if (this.lastKey==40) { // Down - const newIndex = childIndex+1; - let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) { // last child, jump to parent next parent - elem = this.NavNext(itemIndex+1); - } - if (elem) { - elem.focus(); - } - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; - } - return false; - } -} - -function createResults(resultsPath) { - - function setKeyActions(elem,action) { - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); - } - - function setClassAttr(elem,attr) { - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); - } - - const results = document.getElementById("SRResults"); - results.innerHTML = ''; - searchData.forEach((elem,index) => { - const id = elem[0]; - const srResult = document.createElement('div'); - srResult.setAttribute('id','SR_'+id); - setClassAttr(srResult,'SRResult'); - const srEntry = document.createElement('div'); - setClassAttr(srEntry,'SREntry'); - const srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+index); - setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); - setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = elem[1][0]; - srEntry.appendChild(srLink); - if (elem[1].length==2) { // single result - srLink.setAttribute('href',resultsPath+elem[1][1][0]); - srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); - if (elem[1][1][1]) { - srLink.setAttribute('target','_parent'); - } else { - srLink.setAttribute('target','_blank'); - } - const srScope = document.createElement('span'); - setClassAttr(srScope,'SRScope'); - srScope.innerHTML = elem[1][1][2]; - srEntry.appendChild(srScope); - } else { // multiple results - srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - const srChildren = document.createElement('div'); - setClassAttr(srChildren,'SRChildren'); - for (let c=0; c-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/docs/manual/splitbard.png b/docs/manual/splitbard.png deleted file mode 100644 index 8367416d757fd7b6dc4272b6432dc75a75abd068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? diff --git a/docs/manual/sync_off.png b/docs/manual/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/docs/manual/sync_on.png b/docs/manual/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/docs/manual/tab_a.png b/docs/manual/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/docs/manual/tab_ad.png b/docs/manual/tab_ad.png deleted file mode 100644 index e34850acfc24be58da6d2fd1ccc6b29cc84fe34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( diff --git a/docs/manual/tab_s.png b/docs/manual/tab_s.png deleted file mode 100644 index ab478c95b67371d700a20869f7de1ddd73522d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/docs/manual/tab_sd.png b/docs/manual/tab_sd.png deleted file mode 100644 index 757a565ced4730f85c833fb2547d8e199ae68f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% diff --git a/docs/manual/tabs.css b/docs/manual/tabs.css deleted file mode 100644 index fe4854a..0000000 --- a/docs/manual/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file From b0bd0e6eee6650770bc1e53565b17ae64064a491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 22 May 2024 11:10:21 +0200 Subject: [PATCH 15/21] Create doc target to build documentation --- .gitignore | 4 ++++ CMakeLists.txt | 17 +++++++---------- Makefile | 7 ++++++- docs/Doxyfile.in | 6 +++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index a1c4460..fa86698 100644 --- a/.gitignore +++ b/.gitignore @@ -40,4 +40,8 @@ puml/** .vscode/settings.json sample/build **/.DS_Store +docs/manual +docs/man3 +docs/man +docs/Doxyfile diff --git a/CMakeLists.txt b/CMakeLists.txt index ffaabd6..5a2d731 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,14 +92,11 @@ install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DES # Documentation # ------------- -set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in) -set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +find_package(Doxygen REQUIRED dot) +set(DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/docs) +set(doxyfile_in ${DOC_DIR}/Doxyfile.in) +set(doxyfile ${DOC_DIR}/Doxyfile) configure_file(${doxyfile_in} ${doxyfile} @ONLY) - -# doc build only target, target is not in default build, so it must be -# triggered explicitly -add_custom_target(doc - COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM) \ No newline at end of file +doxygen_add_docs(doxygen + WORKING_DIRECTORY ${DOC_DIR} + CONFIG_FILE ${doxyfile}) diff --git a/Makefile b/Makefile index 729db2f..aab1cc5 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL := /bin/bash .DEFAULT_GOAL := help -.PHONY: viewcoverage coverage setup help install uninstall diagrams buildr buildd test clean debug release sample updatebadge +.PHONY: viewcoverage coverage setup help install uninstall diagrams buildr buildd test clean debug release sample updatebadge doc f_release = build_Release f_debug = build_Debug @@ -145,6 +145,11 @@ updatebadge: ## Update the coverage badge in README.md @env python update_coverage.py $(f_debug)/tests @echo ">>> Done"; +doc: ## Generate documentation + @echo ">>> Generating documentation..." + @cmake --build $(f_release) -t doxygen + @echo ">>> Done"; + help: ## Show help message @IFS=$$'\n' ; \ help_lines=(`fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##/:/'`); \ diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 147e0b5..95acb53 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -42,19 +42,19 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = BayesNet +PROJECT_NAME = "@CMAKE_PROJECT_NAME@" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.0.5 +PROJECT_NUMBER = @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@PROJECT_VERSION_TWEAK@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "Bayesian Network Classifiers using libtorch from scratch" +PROJECT_BRIEF = "@CMAKE_PROJECT_DESCRIPTION@" # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 From fa35681abee95700775be69efc363af98f55fdab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 22 May 2024 11:39:33 +0200 Subject: [PATCH 16/21] Add documentation link to readme --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 861499b..67d8213 100644 --- a/README.md +++ b/README.md @@ -67,10 +67,14 @@ make sample fname=tests/data/glass.arff #### - SPODE +#### - SPnDE + #### - AODE #### - [BoostAODE](docs/BoostAODE.md) +#### - BoostA2DE + ### With Local Discretization #### - TANLd @@ -81,6 +85,12 @@ make sample fname=tests/data/glass.arff #### - AODELd +## Documentation + +### [Manual](https://rmontanana.github.io/bayesnet/) + +### [Coverage report](docs/coverage.pdf) + ## Diagrams ### UML Class Diagram @@ -90,7 +100,3 @@ make sample fname=tests/data/glass.arff ### Dependency Diagram ![BayesNet Dependency Diagram](diagrams/dependency.svg) - -## Coverage report - -### [Coverage report](docs/coverage.pdf) From f5cb46ee29a99e524625d6ba1ad65b324b772d9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 22 May 2024 12:09:58 +0200 Subject: [PATCH 17/21] Add doc-install to Makefile --- CHANGELOG.md | 4 ++++ Makefile | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 016627c..585439a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - A2DE & SPnDE tests. - Add tests to reach 99% of coverage. - Add tests to check the correct version of the mdlp, folding and json libraries. +- Library documentation generated with Doxygen. +- Link to documentation in the README.md. ### Internal @@ -27,6 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactor Coverage Report generation. - Add devcontainer to work on apple silicon. - Change build cmake folder names to Debug & Release. +- Add a Makefile target (doc) to generate the documentation. +- Add a Makefile target (doc-install) to install the documentation. ## [1.0.5] 2024-04-20 diff --git a/Makefile b/Makefile index aab1cc5..6d8a7aa 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL := /bin/bash .DEFAULT_GOAL := help -.PHONY: viewcoverage coverage setup help install uninstall diagrams buildr buildd test clean debug release sample updatebadge doc +.PHONY: viewcoverage coverage setup help install uninstall diagrams buildr buildd test clean debug release sample updatebadge doc doc-install f_release = build_Release f_debug = build_Debug @@ -13,6 +13,9 @@ lcov = lcov genhtml = genhtml dot = dot n_procs = -j 16 +docsrcdir = docs/manual +mansrcdir = docs/man3 +mandestdir = /usr/local/share/man define ClearTests @for t in $(test_targets); do \ @@ -150,6 +153,20 @@ doc: ## Generate documentation @cmake --build $(f_release) -t doxygen @echo ">>> Done"; +docdir = "" +doc-install: ## Install documentation + @echo ">>> Installing documentation..." + @if [ "$(docdir)" = "" ]; then \ + echo "docdir parameter has to be set when calling doc-install"; \ + exit 1; \ + fi + @if [ ! -d $(docdir) ]; then \ + @$(MAKE) doc; \ + fi + @cp -rp $(docsrcdir)/* $(docdir) + @sudo cp -rp $(mansrcdir) $(mandestdir) + @echo ">>> Done"; + help: ## Show help message @IFS=$$'\n' ; \ help_lines=(`fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##/:/'`); \ From c833e9ba32cbecf2fac0f6772f58d2ea63148d8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Thu, 23 May 2024 16:27:02 +0200 Subject: [PATCH 18/21] Remove coverage report from html folder and integrate in doc --- Makefile | 10 +- README.md | 2 +- docs/Doxyfile.in | 6 +- docs/coverage.pdf | Bin 22170 -> 0 bytes html/amber.png | Bin 141 -> 0 bytes html/bayesnet/BaseClassifier.h.func-c.html | 90 -- html/bayesnet/BaseClassifier.h.func.html | 90 -- .../BaseClassifier.h.gcov.frameset.html | 19 - html/bayesnet/BaseClassifier.h.gcov.html | 129 -- .../BaseClassifier.h.gcov.overview.html | 32 - html/bayesnet/BaseClassifier.h.gcov.png | Bin 372 -> 0 bytes .../classifiers/Classifier.cc.func-c.html | 251 ---- .../classifiers/Classifier.cc.func.html | 251 ---- .../Classifier.cc.gcov.frameset.html | 19 - .../classifiers/Classifier.cc.gcov.html | 278 ----- .../Classifier.cc.gcov.overview.html | 69 -- .../classifiers/Classifier.cc.gcov.png | Bin 852 -> 0 bytes .../classifiers/Classifier.h.func-c.html | 111 -- .../classifiers/Classifier.h.func.html | 111 -- .../Classifier.h.gcov.frameset.html | 19 - .../classifiers/Classifier.h.gcov.html | 149 --- .../Classifier.h.gcov.overview.html | 37 - .../classifiers/Classifier.h.gcov.png | Bin 453 -> 0 bytes html/bayesnet/classifiers/KDB.cc.func-c.html | 118 -- html/bayesnet/classifiers/KDB.cc.func.html | 118 -- .../classifiers/KDB.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/KDB.cc.gcov.html | 195 --- .../classifiers/KDB.cc.gcov.overview.html | 48 - html/bayesnet/classifiers/KDB.cc.gcov.png | Bin 814 -> 0 bytes html/bayesnet/classifiers/KDB.h.func-c.html | 90 -- html/bayesnet/classifiers/KDB.h.func.html | 90 -- .../classifiers/KDB.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/KDB.h.gcov.html | 111 -- .../classifiers/KDB.h.gcov.overview.html | 27 - html/bayesnet/classifiers/KDB.h.gcov.png | Bin 279 -> 0 bytes .../bayesnet/classifiers/KDBLd.cc.func-c.html | 111 -- html/bayesnet/classifiers/KDBLd.cc.func.html | 111 -- .../classifiers/KDBLd.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/KDBLd.cc.gcov.html | 119 -- .../classifiers/KDBLd.cc.gcov.overview.html | 29 - html/bayesnet/classifiers/KDBLd.cc.gcov.png | Bin 333 -> 0 bytes html/bayesnet/classifiers/KDBLd.h.func-c.html | 90 -- html/bayesnet/classifiers/KDBLd.h.func.html | 90 -- .../classifiers/KDBLd.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/KDBLd.h.gcov.html | 108 -- .../classifiers/KDBLd.h.gcov.overview.html | 26 - html/bayesnet/classifiers/KDBLd.h.gcov.png | Bin 265 -> 0 bytes .../classifiers/Proposal.cc.func-c.html | 139 --- .../classifiers/Proposal.cc.func.html | 139 --- .../Proposal.cc.gcov.frameset.html | 19 - .../classifiers/Proposal.cc.gcov.html | 200 --- .../Proposal.cc.gcov.overview.html | 49 - .../bayesnet/classifiers/Proposal.cc.gcov.png | Bin 796 -> 0 bytes .../bayesnet/classifiers/SPODE.cc.func-c.html | 104 -- html/bayesnet/classifiers/SPODE.cc.func.html | 104 -- .../classifiers/SPODE.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/SPODE.cc.gcov.html | 115 -- .../classifiers/SPODE.cc.gcov.overview.html | 28 - html/bayesnet/classifiers/SPODE.cc.gcov.png | Bin 310 -> 0 bytes html/bayesnet/classifiers/SPODE.h.func-c.html | 90 -- html/bayesnet/classifiers/SPODE.h.func.html | 90 -- .../classifiers/SPODE.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/SPODE.h.gcov.html | 107 -- .../classifiers/SPODE.h.gcov.overview.html | 26 - html/bayesnet/classifiers/SPODE.h.gcov.png | Bin 245 -> 0 bytes .../classifiers/SPODELd.cc.func-c.html | 125 -- .../bayesnet/classifiers/SPODELd.cc.func.html | 125 -- .../classifiers/SPODELd.cc.gcov.frameset.html | 19 - .../bayesnet/classifiers/SPODELd.cc.gcov.html | 134 -- .../classifiers/SPODELd.cc.gcov.overview.html | 33 - html/bayesnet/classifiers/SPODELd.cc.gcov.png | Bin 403 -> 0 bytes .../classifiers/SPODELd.h.func-c.html | 90 -- html/bayesnet/classifiers/SPODELd.h.func.html | 90 -- .../classifiers/SPODELd.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/SPODELd.h.gcov.html | 109 -- .../classifiers/SPODELd.h.gcov.overview.html | 27 - html/bayesnet/classifiers/SPODELd.h.gcov.png | Bin 270 -> 0 bytes .../bayesnet/classifiers/SPnDE.cc.func-c.html | 104 -- html/bayesnet/classifiers/SPnDE.cc.func.html | 104 -- .../classifiers/SPnDE.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/SPnDE.cc.gcov.html | 122 -- .../classifiers/SPnDE.cc.gcov.overview.html | 30 - html/bayesnet/classifiers/SPnDE.cc.gcov.png | Bin 332 -> 0 bytes html/bayesnet/classifiers/SPnDE.h.func-c.html | 90 -- html/bayesnet/classifiers/SPnDE.h.func.html | 90 -- .../classifiers/SPnDE.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/SPnDE.h.gcov.html | 110 -- .../classifiers/SPnDE.h.gcov.overview.html | 27 - html/bayesnet/classifiers/SPnDE.h.gcov.png | Bin 254 -> 0 bytes html/bayesnet/classifiers/TAN.cc.func-c.html | 111 -- html/bayesnet/classifiers/TAN.cc.func.html | 111 -- .../classifiers/TAN.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/TAN.cc.gcov.html | 129 -- .../classifiers/TAN.cc.gcov.overview.html | 32 - html/bayesnet/classifiers/TAN.cc.gcov.png | Bin 414 -> 0 bytes html/bayesnet/classifiers/TAN.h.func-c.html | 90 -- html/bayesnet/classifiers/TAN.h.func.html | 90 -- .../classifiers/TAN.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/TAN.h.gcov.html | 105 -- .../classifiers/TAN.h.gcov.overview.html | 26 - html/bayesnet/classifiers/TAN.h.gcov.png | Bin 238 -> 0 bytes .../bayesnet/classifiers/TANLd.cc.func-c.html | 111 -- html/bayesnet/classifiers/TANLd.cc.func.html | 111 -- .../classifiers/TANLd.cc.gcov.frameset.html | 19 - html/bayesnet/classifiers/TANLd.cc.gcov.html | 120 -- .../classifiers/TANLd.cc.gcov.overview.html | 29 - html/bayesnet/classifiers/TANLd.cc.gcov.png | Bin 336 -> 0 bytes html/bayesnet/classifiers/TANLd.h.func-c.html | 90 -- html/bayesnet/classifiers/TANLd.h.func.html | 90 -- .../classifiers/TANLd.h.gcov.frameset.html | 19 - html/bayesnet/classifiers/TANLd.h.gcov.html | 108 -- .../classifiers/TANLd.h.gcov.overview.html | 26 - html/bayesnet/classifiers/TANLd.h.gcov.png | Bin 260 -> 0 bytes .../classifiers/index-detail-sort-f.html | 306 ----- .../classifiers/index-detail-sort-l.html | 306 ----- html/bayesnet/classifiers/index-detail.html | 306 ----- html/bayesnet/classifiers/index-sort-f.html | 306 ----- html/bayesnet/classifiers/index-sort-l.html | 306 ----- html/bayesnet/classifiers/index.html | 306 ----- html/bayesnet/ensembles/A2DE.cc.func-c.html | 111 -- html/bayesnet/ensembles/A2DE.cc.func.html | 111 -- .../ensembles/A2DE.cc.gcov.frameset.html | 19 - html/bayesnet/ensembles/A2DE.cc.gcov.html | 124 -- .../ensembles/A2DE.cc.gcov.overview.html | 30 - html/bayesnet/ensembles/A2DE.cc.gcov.png | Bin 324 -> 0 bytes html/bayesnet/ensembles/A2DE.h.func-c.html | 90 -- html/bayesnet/ensembles/A2DE.h.func.html | 90 -- .../ensembles/A2DE.h.gcov.frameset.html | 19 - html/bayesnet/ensembles/A2DE.h.gcov.html | 106 -- .../ensembles/A2DE.h.gcov.overview.html | 26 - html/bayesnet/ensembles/A2DE.h.gcov.png | Bin 246 -> 0 bytes html/bayesnet/ensembles/AODE.cc.func-c.html | 111 -- html/bayesnet/ensembles/AODE.cc.func.html | 111 -- .../ensembles/AODE.cc.gcov.frameset.html | 19 - html/bayesnet/ensembles/AODE.cc.gcov.html | 122 -- .../ensembles/AODE.cc.gcov.overview.html | 30 - html/bayesnet/ensembles/AODE.cc.gcov.png | Bin 307 -> 0 bytes html/bayesnet/ensembles/AODE.h.func-c.html | 90 -- html/bayesnet/ensembles/AODE.h.func.html | 90 -- .../ensembles/AODE.h.gcov.frameset.html | 19 - html/bayesnet/ensembles/AODE.h.gcov.html | 106 -- .../ensembles/AODE.h.gcov.overview.html | 26 - html/bayesnet/ensembles/AODE.h.gcov.png | Bin 246 -> 0 bytes html/bayesnet/ensembles/AODELd.cc.func-c.html | 118 -- html/bayesnet/ensembles/AODELd.cc.func.html | 118 -- .../ensembles/AODELd.cc.gcov.frameset.html | 19 - html/bayesnet/ensembles/AODELd.cc.gcov.html | 131 -- .../ensembles/AODELd.cc.gcov.overview.html | 32 - html/bayesnet/ensembles/AODELd.cc.gcov.png | Bin 388 -> 0 bytes html/bayesnet/ensembles/AODELd.h.func-c.html | 90 -- html/bayesnet/ensembles/AODELd.h.func.html | 90 -- .../ensembles/AODELd.h.gcov.frameset.html | 19 - html/bayesnet/ensembles/AODELd.h.gcov.html | 109 -- .../ensembles/AODELd.h.gcov.overview.html | 27 - html/bayesnet/ensembles/AODELd.h.gcov.png | Bin 261 -> 0 bytes .../ensembles/BoostAODE.cc.func-c.html | 146 --- .../bayesnet/ensembles/BoostAODE.cc.func.html | 146 --- .../ensembles/BoostAODE.cc.gcov.frameset.html | 19 - .../bayesnet/ensembles/BoostAODE.cc.gcov.html | 480 -------- .../ensembles/BoostAODE.cc.gcov.overview.html | 119 -- html/bayesnet/ensembles/BoostAODE.cc.gcov.png | Bin 2128 -> 0 bytes .../ensembles/BoostAODE.h.func-c.html | 90 -- html/bayesnet/ensembles/BoostAODE.h.func.html | 90 -- .../ensembles/BoostAODE.h.gcov.frameset.html | 19 - html/bayesnet/ensembles/BoostAODE.h.gcov.html | 134 -- .../ensembles/BoostAODE.h.gcov.overview.html | 33 - html/bayesnet/ensembles/BoostAODE.h.gcov.png | Bin 386 -> 0 bytes .../ensembles/Ensemble.cc.func-c.html | 258 ---- html/bayesnet/ensembles/Ensemble.cc.func.html | 258 ---- .../ensembles/Ensemble.cc.gcov.frameset.html | 19 - html/bayesnet/ensembles/Ensemble.cc.gcov.html | 306 ----- .../ensembles/Ensemble.cc.gcov.overview.html | 76 -- html/bayesnet/ensembles/Ensemble.cc.gcov.png | Bin 912 -> 0 bytes .../bayesnet/ensembles/Ensemble.h.func-c.html | 104 -- html/bayesnet/ensembles/Ensemble.h.func.html | 104 -- .../ensembles/Ensemble.h.gcov.frameset.html | 19 - html/bayesnet/ensembles/Ensemble.h.gcov.html | 137 --- .../ensembles/Ensemble.h.gcov.overview.html | 34 - html/bayesnet/ensembles/Ensemble.h.gcov.png | Bin 386 -> 0 bytes .../ensembles/index-detail-sort-f.html | 222 ---- .../ensembles/index-detail-sort-l.html | 222 ---- html/bayesnet/ensembles/index-detail.html | 222 ---- html/bayesnet/ensembles/index-sort-f.html | 222 ---- html/bayesnet/ensembles/index-sort-l.html | 222 ---- html/bayesnet/ensembles/index.html | 222 ---- .../feature_selection/CFS.cc.func-c.html | 97 -- .../feature_selection/CFS.cc.func.html | 97 -- .../CFS.cc.gcov.frameset.html | 19 - .../feature_selection/CFS.cc.gcov.html | 162 --- .../CFS.cc.gcov.overview.html | 40 - .../feature_selection/CFS.cc.gcov.png | Bin 539 -> 0 bytes .../feature_selection/CFS.h.func-c.html | 97 -- .../feature_selection/CFS.h.func.html | 97 -- .../CFS.h.gcov.frameset.html | 19 - .../feature_selection/CFS.h.gcov.html | 110 -- .../CFS.h.gcov.overview.html | 27 - .../bayesnet/feature_selection/CFS.h.gcov.png | Bin 266 -> 0 bytes .../feature_selection/FCBF.cc.func-c.html | 97 -- .../feature_selection/FCBF.cc.func.html | 97 -- .../FCBF.cc.gcov.frameset.html | 19 - .../feature_selection/FCBF.cc.gcov.html | 134 -- .../FCBF.cc.gcov.overview.html | 33 - .../feature_selection/FCBF.cc.gcov.png | Bin 397 -> 0 bytes .../feature_selection/FCBF.h.func-c.html | 90 -- .../feature_selection/FCBF.h.func.html | 90 -- .../FCBF.h.gcov.frameset.html | 19 - .../feature_selection/FCBF.h.gcov.html | 107 -- .../FCBF.h.gcov.overview.html | 26 - .../feature_selection/FCBF.h.gcov.png | Bin 254 -> 0 bytes .../FeatureSelect.cc.func-c.html | 139 --- .../FeatureSelect.cc.func.html | 139 --- .../FeatureSelect.cc.gcov.frameset.html | 19 - .../FeatureSelect.cc.gcov.html | 168 --- .../FeatureSelect.cc.gcov.overview.html | 41 - .../FeatureSelect.cc.gcov.png | Bin 516 -> 0 bytes .../FeatureSelect.h.func-c.html | 90 -- .../FeatureSelect.h.func.html | 90 -- .../FeatureSelect.h.gcov.frameset.html | 19 - .../FeatureSelect.h.gcov.html | 120 -- .../FeatureSelect.h.gcov.overview.html | 29 - .../FeatureSelect.h.gcov.png | Bin 316 -> 0 bytes .../feature_selection/IWSS.cc.func-c.html | 97 -- .../feature_selection/IWSS.cc.func.html | 97 -- .../IWSS.cc.gcov.frameset.html | 19 - .../feature_selection/IWSS.cc.gcov.html | 137 --- .../IWSS.cc.gcov.overview.html | 34 - .../feature_selection/IWSS.cc.gcov.png | Bin 431 -> 0 bytes .../feature_selection/IWSS.h.func-c.html | 90 -- .../feature_selection/IWSS.h.func.html | 90 -- .../IWSS.h.gcov.frameset.html | 19 - .../feature_selection/IWSS.h.gcov.html | 107 -- .../IWSS.h.gcov.overview.html | 26 - .../feature_selection/IWSS.h.gcov.png | Bin 255 -> 0 bytes .../index-detail-sort-f.html | 198 --- .../index-detail-sort-l.html | 198 --- .../feature_selection/index-detail.html | 198 --- .../feature_selection/index-sort-f.html | 198 --- .../feature_selection/index-sort-l.html | 198 --- html/bayesnet/feature_selection/index.html | 198 --- html/bayesnet/index-detail-sort-f.html | 114 -- html/bayesnet/index-detail-sort-l.html | 114 -- html/bayesnet/index-detail.html | 114 -- html/bayesnet/index-sort-f.html | 114 -- html/bayesnet/index-sort-l.html | 114 -- html/bayesnet/index.html | 114 -- html/bayesnet/network/Network.cc.func-c.html | 363 ------ html/bayesnet/network/Network.cc.func.html | 363 ------ .../network/Network.cc.gcov.frameset.html | 19 - html/bayesnet/network/Network.cc.gcov.html | 513 -------- .../network/Network.cc.gcov.overview.html | 128 -- html/bayesnet/network/Network.cc.gcov.png | Bin 1925 -> 0 bytes html/bayesnet/network/Network.h.func-c.html | 90 -- html/bayesnet/network/Network.h.func.html | 90 -- .../network/Network.h.gcov.frameset.html | 19 - html/bayesnet/network/Network.h.gcov.html | 153 --- .../network/Network.h.gcov.overview.html | 38 - html/bayesnet/network/Network.h.gcov.png | Bin 478 -> 0 bytes html/bayesnet/network/Node.cc.func-c.html | 223 ---- html/bayesnet/network/Node.cc.func.html | 223 ---- .../network/Node.cc.gcov.frameset.html | 19 - html/bayesnet/network/Node.cc.gcov.html | 224 ---- .../network/Node.cc.gcov.overview.html | 55 - html/bayesnet/network/Node.cc.gcov.png | Bin 758 -> 0 bytes .../bayesnet/network/index-detail-sort-f.html | 138 --- .../bayesnet/network/index-detail-sort-l.html | 138 --- html/bayesnet/network/index-detail.html | 138 --- html/bayesnet/network/index-sort-f.html | 138 --- html/bayesnet/network/index-sort-l.html | 138 --- html/bayesnet/network/index.html | 138 --- .../utils/BayesMetrics.cc.func-c.html | 160 --- html/bayesnet/utils/BayesMetrics.cc.func.html | 160 --- .../utils/BayesMetrics.cc.gcov.frameset.html | 19 - html/bayesnet/utils/BayesMetrics.cc.gcov.html | 245 ---- .../utils/BayesMetrics.cc.gcov.overview.html | 61 - html/bayesnet/utils/BayesMetrics.cc.gcov.png | Bin 965 -> 0 bytes .../bayesnet/utils/BayesMetrics.h.func-c.html | 118 -- html/bayesnet/utils/BayesMetrics.h.func.html | 118 -- .../utils/BayesMetrics.h.gcov.frameset.html | 19 - html/bayesnet/utils/BayesMetrics.h.gcov.html | 138 --- .../utils/BayesMetrics.h.gcov.overview.html | 34 - html/bayesnet/utils/BayesMetrics.h.gcov.png | Bin 417 -> 0 bytes html/bayesnet/utils/Mst.cc.func-c.html | 153 --- html/bayesnet/utils/Mst.cc.func.html | 153 --- html/bayesnet/utils/Mst.cc.gcov.frameset.html | 19 - html/bayesnet/utils/Mst.cc.gcov.html | 204 ---- html/bayesnet/utils/Mst.cc.gcov.overview.html | 50 - html/bayesnet/utils/Mst.cc.gcov.png | Bin 733 -> 0 bytes html/bayesnet/utils/Mst.h.func-c.html | 90 -- html/bayesnet/utils/Mst.h.func.html | 90 -- html/bayesnet/utils/Mst.h.gcov.frameset.html | 19 - html/bayesnet/utils/Mst.h.gcov.html | 122 -- html/bayesnet/utils/Mst.h.gcov.overview.html | 30 - html/bayesnet/utils/Mst.h.gcov.png | Bin 316 -> 0 bytes .../utils/bayesnetUtils.cc.func-c.html | 111 -- .../bayesnet/utils/bayesnetUtils.cc.func.html | 111 -- .../utils/bayesnetUtils.cc.gcov.frameset.html | 19 - .../bayesnet/utils/bayesnetUtils.cc.gcov.html | 128 -- .../utils/bayesnetUtils.cc.gcov.overview.html | 31 - html/bayesnet/utils/bayesnetUtils.cc.gcov.png | Bin 373 -> 0 bytes html/bayesnet/utils/index-detail-sort-f.html | 162 --- html/bayesnet/utils/index-detail-sort-l.html | 162 --- html/bayesnet/utils/index-detail.html | 162 --- html/bayesnet/utils/index-sort-f.html | 162 --- html/bayesnet/utils/index-sort-l.html | 162 --- html/bayesnet/utils/index.html | 162 --- html/cmd_line | 1 - html/emerald.png | Bin 141 -> 0 bytes html/gcov.css | 1073 ----------------- html/glass.png | Bin 167 -> 0 bytes html/index-sort-f.html | 174 --- html/index-sort-l.html | 174 --- html/index.html | 174 --- html/ruby.png | Bin 141 -> 0 bytes html/snow.png | Bin 141 -> 0 bytes html/updown.png | Bin 117 -> 0 bytes 315 files changed, 13 insertions(+), 28605 deletions(-) delete mode 100644 docs/coverage.pdf delete mode 100644 html/amber.png delete mode 100644 html/bayesnet/BaseClassifier.h.func-c.html delete mode 100644 html/bayesnet/BaseClassifier.h.func.html delete mode 100644 html/bayesnet/BaseClassifier.h.gcov.frameset.html delete mode 100644 html/bayesnet/BaseClassifier.h.gcov.html delete mode 100644 html/bayesnet/BaseClassifier.h.gcov.overview.html delete mode 100644 html/bayesnet/BaseClassifier.h.gcov.png delete mode 100644 html/bayesnet/classifiers/Classifier.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/Classifier.cc.func.html delete mode 100644 html/bayesnet/classifiers/Classifier.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/Classifier.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/Classifier.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/Classifier.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/Classifier.h.func-c.html delete mode 100644 html/bayesnet/classifiers/Classifier.h.func.html delete mode 100644 html/bayesnet/classifiers/Classifier.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/Classifier.h.gcov.html delete mode 100644 html/bayesnet/classifiers/Classifier.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/Classifier.h.gcov.png delete mode 100644 html/bayesnet/classifiers/KDB.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/KDB.cc.func.html delete mode 100644 html/bayesnet/classifiers/KDB.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/KDB.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/KDB.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/KDB.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/KDB.h.func-c.html delete mode 100644 html/bayesnet/classifiers/KDB.h.func.html delete mode 100644 html/bayesnet/classifiers/KDB.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/KDB.h.gcov.html delete mode 100644 html/bayesnet/classifiers/KDB.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/KDB.h.gcov.png delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.func.html delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/KDBLd.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/KDBLd.h.func-c.html delete mode 100644 html/bayesnet/classifiers/KDBLd.h.func.html delete mode 100644 html/bayesnet/classifiers/KDBLd.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/KDBLd.h.gcov.html delete mode 100644 html/bayesnet/classifiers/KDBLd.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/KDBLd.h.gcov.png delete mode 100644 html/bayesnet/classifiers/Proposal.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/Proposal.cc.func.html delete mode 100644 html/bayesnet/classifiers/Proposal.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/Proposal.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/Proposal.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/Proposal.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/SPODE.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/SPODE.cc.func.html delete mode 100644 html/bayesnet/classifiers/SPODE.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPODE.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/SPODE.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPODE.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/SPODE.h.func-c.html delete mode 100644 html/bayesnet/classifiers/SPODE.h.func.html delete mode 100644 html/bayesnet/classifiers/SPODE.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPODE.h.gcov.html delete mode 100644 html/bayesnet/classifiers/SPODE.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPODE.h.gcov.png delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.func.html delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPODELd.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/SPODELd.h.func-c.html delete mode 100644 html/bayesnet/classifiers/SPODELd.h.func.html delete mode 100644 html/bayesnet/classifiers/SPODELd.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPODELd.h.gcov.html delete mode 100644 html/bayesnet/classifiers/SPODELd.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPODELd.h.gcov.png delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.func.html delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPnDE.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/SPnDE.h.func-c.html delete mode 100644 html/bayesnet/classifiers/SPnDE.h.func.html delete mode 100644 html/bayesnet/classifiers/SPnDE.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/SPnDE.h.gcov.html delete mode 100644 html/bayesnet/classifiers/SPnDE.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/SPnDE.h.gcov.png delete mode 100644 html/bayesnet/classifiers/TAN.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/TAN.cc.func.html delete mode 100644 html/bayesnet/classifiers/TAN.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/TAN.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/TAN.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/TAN.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/TAN.h.func-c.html delete mode 100644 html/bayesnet/classifiers/TAN.h.func.html delete mode 100644 html/bayesnet/classifiers/TAN.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/TAN.h.gcov.html delete mode 100644 html/bayesnet/classifiers/TAN.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/TAN.h.gcov.png delete mode 100644 html/bayesnet/classifiers/TANLd.cc.func-c.html delete mode 100644 html/bayesnet/classifiers/TANLd.cc.func.html delete mode 100644 html/bayesnet/classifiers/TANLd.cc.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/TANLd.cc.gcov.html delete mode 100644 html/bayesnet/classifiers/TANLd.cc.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/TANLd.cc.gcov.png delete mode 100644 html/bayesnet/classifiers/TANLd.h.func-c.html delete mode 100644 html/bayesnet/classifiers/TANLd.h.func.html delete mode 100644 html/bayesnet/classifiers/TANLd.h.gcov.frameset.html delete mode 100644 html/bayesnet/classifiers/TANLd.h.gcov.html delete mode 100644 html/bayesnet/classifiers/TANLd.h.gcov.overview.html delete mode 100644 html/bayesnet/classifiers/TANLd.h.gcov.png delete mode 100644 html/bayesnet/classifiers/index-detail-sort-f.html delete mode 100644 html/bayesnet/classifiers/index-detail-sort-l.html delete mode 100644 html/bayesnet/classifiers/index-detail.html delete mode 100644 html/bayesnet/classifiers/index-sort-f.html delete mode 100644 html/bayesnet/classifiers/index-sort-l.html delete mode 100644 html/bayesnet/classifiers/index.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.func-c.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.func.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.gcov.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/A2DE.cc.gcov.png delete mode 100644 html/bayesnet/ensembles/A2DE.h.func-c.html delete mode 100644 html/bayesnet/ensembles/A2DE.h.func.html delete mode 100644 html/bayesnet/ensembles/A2DE.h.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/A2DE.h.gcov.html delete mode 100644 html/bayesnet/ensembles/A2DE.h.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/A2DE.h.gcov.png delete mode 100644 html/bayesnet/ensembles/AODE.cc.func-c.html delete mode 100644 html/bayesnet/ensembles/AODE.cc.func.html delete mode 100644 html/bayesnet/ensembles/AODE.cc.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/AODE.cc.gcov.html delete mode 100644 html/bayesnet/ensembles/AODE.cc.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/AODE.cc.gcov.png delete mode 100644 html/bayesnet/ensembles/AODE.h.func-c.html delete mode 100644 html/bayesnet/ensembles/AODE.h.func.html delete mode 100644 html/bayesnet/ensembles/AODE.h.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/AODE.h.gcov.html delete mode 100644 html/bayesnet/ensembles/AODE.h.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/AODE.h.gcov.png delete mode 100644 html/bayesnet/ensembles/AODELd.cc.func-c.html delete mode 100644 html/bayesnet/ensembles/AODELd.cc.func.html delete mode 100644 html/bayesnet/ensembles/AODELd.cc.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/AODELd.cc.gcov.html delete mode 100644 html/bayesnet/ensembles/AODELd.cc.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/AODELd.cc.gcov.png delete mode 100644 html/bayesnet/ensembles/AODELd.h.func-c.html delete mode 100644 html/bayesnet/ensembles/AODELd.h.func.html delete mode 100644 html/bayesnet/ensembles/AODELd.h.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/AODELd.h.gcov.html delete mode 100644 html/bayesnet/ensembles/AODELd.h.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/AODELd.h.gcov.png delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.func-c.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.func.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.gcov.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.cc.gcov.png delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.func-c.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.func.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.gcov.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/BoostAODE.h.gcov.png delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.func-c.html delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.func.html delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.gcov.html delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/Ensemble.cc.gcov.png delete mode 100644 html/bayesnet/ensembles/Ensemble.h.func-c.html delete mode 100644 html/bayesnet/ensembles/Ensemble.h.func.html delete mode 100644 html/bayesnet/ensembles/Ensemble.h.gcov.frameset.html delete mode 100644 html/bayesnet/ensembles/Ensemble.h.gcov.html delete mode 100644 html/bayesnet/ensembles/Ensemble.h.gcov.overview.html delete mode 100644 html/bayesnet/ensembles/Ensemble.h.gcov.png delete mode 100644 html/bayesnet/ensembles/index-detail-sort-f.html delete mode 100644 html/bayesnet/ensembles/index-detail-sort-l.html delete mode 100644 html/bayesnet/ensembles/index-detail.html delete mode 100644 html/bayesnet/ensembles/index-sort-f.html delete mode 100644 html/bayesnet/ensembles/index-sort-l.html delete mode 100644 html/bayesnet/ensembles/index.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.func-c.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.func.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.gcov.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/CFS.cc.gcov.png delete mode 100644 html/bayesnet/feature_selection/CFS.h.func-c.html delete mode 100644 html/bayesnet/feature_selection/CFS.h.func.html delete mode 100644 html/bayesnet/feature_selection/CFS.h.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/CFS.h.gcov.html delete mode 100644 html/bayesnet/feature_selection/CFS.h.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/CFS.h.gcov.png delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.func-c.html delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.func.html delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.gcov.html delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/FCBF.cc.gcov.png delete mode 100644 html/bayesnet/feature_selection/FCBF.h.func-c.html delete mode 100644 html/bayesnet/feature_selection/FCBF.h.func.html delete mode 100644 html/bayesnet/feature_selection/FCBF.h.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/FCBF.h.gcov.html delete mode 100644 html/bayesnet/feature_selection/FCBF.h.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/FCBF.h.gcov.png delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.func-c.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.func.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.gcov.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.cc.gcov.png delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.func-c.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.func.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.gcov.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/FeatureSelect.h.gcov.png delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.func-c.html delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.func.html delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.gcov.html delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/IWSS.cc.gcov.png delete mode 100644 html/bayesnet/feature_selection/IWSS.h.func-c.html delete mode 100644 html/bayesnet/feature_selection/IWSS.h.func.html delete mode 100644 html/bayesnet/feature_selection/IWSS.h.gcov.frameset.html delete mode 100644 html/bayesnet/feature_selection/IWSS.h.gcov.html delete mode 100644 html/bayesnet/feature_selection/IWSS.h.gcov.overview.html delete mode 100644 html/bayesnet/feature_selection/IWSS.h.gcov.png delete mode 100644 html/bayesnet/feature_selection/index-detail-sort-f.html delete mode 100644 html/bayesnet/feature_selection/index-detail-sort-l.html delete mode 100644 html/bayesnet/feature_selection/index-detail.html delete mode 100644 html/bayesnet/feature_selection/index-sort-f.html delete mode 100644 html/bayesnet/feature_selection/index-sort-l.html delete mode 100644 html/bayesnet/feature_selection/index.html delete mode 100644 html/bayesnet/index-detail-sort-f.html delete mode 100644 html/bayesnet/index-detail-sort-l.html delete mode 100644 html/bayesnet/index-detail.html delete mode 100644 html/bayesnet/index-sort-f.html delete mode 100644 html/bayesnet/index-sort-l.html delete mode 100644 html/bayesnet/index.html delete mode 100644 html/bayesnet/network/Network.cc.func-c.html delete mode 100644 html/bayesnet/network/Network.cc.func.html delete mode 100644 html/bayesnet/network/Network.cc.gcov.frameset.html delete mode 100644 html/bayesnet/network/Network.cc.gcov.html delete mode 100644 html/bayesnet/network/Network.cc.gcov.overview.html delete mode 100644 html/bayesnet/network/Network.cc.gcov.png delete mode 100644 html/bayesnet/network/Network.h.func-c.html delete mode 100644 html/bayesnet/network/Network.h.func.html delete mode 100644 html/bayesnet/network/Network.h.gcov.frameset.html delete mode 100644 html/bayesnet/network/Network.h.gcov.html delete mode 100644 html/bayesnet/network/Network.h.gcov.overview.html delete mode 100644 html/bayesnet/network/Network.h.gcov.png delete mode 100644 html/bayesnet/network/Node.cc.func-c.html delete mode 100644 html/bayesnet/network/Node.cc.func.html delete mode 100644 html/bayesnet/network/Node.cc.gcov.frameset.html delete mode 100644 html/bayesnet/network/Node.cc.gcov.html delete mode 100644 html/bayesnet/network/Node.cc.gcov.overview.html delete mode 100644 html/bayesnet/network/Node.cc.gcov.png delete mode 100644 html/bayesnet/network/index-detail-sort-f.html delete mode 100644 html/bayesnet/network/index-detail-sort-l.html delete mode 100644 html/bayesnet/network/index-detail.html delete mode 100644 html/bayesnet/network/index-sort-f.html delete mode 100644 html/bayesnet/network/index-sort-l.html delete mode 100644 html/bayesnet/network/index.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.func-c.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.func.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.gcov.frameset.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.gcov.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.gcov.overview.html delete mode 100644 html/bayesnet/utils/BayesMetrics.cc.gcov.png delete mode 100644 html/bayesnet/utils/BayesMetrics.h.func-c.html delete mode 100644 html/bayesnet/utils/BayesMetrics.h.func.html delete mode 100644 html/bayesnet/utils/BayesMetrics.h.gcov.frameset.html delete mode 100644 html/bayesnet/utils/BayesMetrics.h.gcov.html delete mode 100644 html/bayesnet/utils/BayesMetrics.h.gcov.overview.html delete mode 100644 html/bayesnet/utils/BayesMetrics.h.gcov.png delete mode 100644 html/bayesnet/utils/Mst.cc.func-c.html delete mode 100644 html/bayesnet/utils/Mst.cc.func.html delete mode 100644 html/bayesnet/utils/Mst.cc.gcov.frameset.html delete mode 100644 html/bayesnet/utils/Mst.cc.gcov.html delete mode 100644 html/bayesnet/utils/Mst.cc.gcov.overview.html delete mode 100644 html/bayesnet/utils/Mst.cc.gcov.png delete mode 100644 html/bayesnet/utils/Mst.h.func-c.html delete mode 100644 html/bayesnet/utils/Mst.h.func.html delete mode 100644 html/bayesnet/utils/Mst.h.gcov.frameset.html delete mode 100644 html/bayesnet/utils/Mst.h.gcov.html delete mode 100644 html/bayesnet/utils/Mst.h.gcov.overview.html delete mode 100644 html/bayesnet/utils/Mst.h.gcov.png delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.func-c.html delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.func.html delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.gcov.frameset.html delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.gcov.html delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.gcov.overview.html delete mode 100644 html/bayesnet/utils/bayesnetUtils.cc.gcov.png delete mode 100644 html/bayesnet/utils/index-detail-sort-f.html delete mode 100644 html/bayesnet/utils/index-detail-sort-l.html delete mode 100644 html/bayesnet/utils/index-detail.html delete mode 100644 html/bayesnet/utils/index-sort-f.html delete mode 100644 html/bayesnet/utils/index-sort-l.html delete mode 100644 html/bayesnet/utils/index.html delete mode 100644 html/cmd_line delete mode 100644 html/emerald.png delete mode 100644 html/gcov.css delete mode 100644 html/glass.png delete mode 100644 html/index-sort-f.html delete mode 100644 html/index-sort-l.html delete mode 100644 html/index.html delete mode 100644 html/ruby.png delete mode 100644 html/snow.png delete mode 100644 html/updown.png diff --git a/Makefile b/Makefile index 6d8a7aa..cb02f3a 100644 --- a/Makefile +++ b/Makefile @@ -133,8 +133,13 @@ coverage: ## Run tests and generate coverage report (build/index.html) @echo ">>> Done"; viewcoverage: ## View the html coverage report - @which $(genhtml) || (echo ">>> Please install lcov (genhtml not found)"; exit 1) - @$(genhtml) $(f_debug)/tests/coverage.info --demangle-cpp --output-directory html --title "BayesNet Coverage Report" -s -k -f --legend >/dev/null 2>&1; + @which $(genhtml) >/dev/null || (echo ">>> Please install lcov (genhtml not found)"; exit 1) + @if [ ! -d $(docsrcdir)/coverage ]; then mkdir -p $(docsrcdir)/coverage; fi + @if [ ! -f $(f_debug)/tests/coverage.info ]; then \ + echo ">>> No coverage.info file found. Run make coverage first!"; \ + exit 1; \ + fi + @$(genhtml) $(f_debug)/tests/coverage.info --demangle-cpp --output-directory $(docsrcdir)/coverage --title "BayesNet Coverage Report" -s -k -f --legend >/dev/null 2>&1; @xdg-open html/index.html || open html/index.html 2>/dev/null @echo ">>> Done"; @@ -151,6 +156,7 @@ updatebadge: ## Update the coverage badge in README.md doc: ## Generate documentation @echo ">>> Generating documentation..." @cmake --build $(f_release) -t doxygen + @cp -rp diagrams $(docsrcdir) @echo ">>> Done"; docdir = "" diff --git a/README.md b/README.md index 67d8213..1b47306 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ make sample fname=tests/data/glass.arff ### [Manual](https://rmontanana.github.io/bayesnet/) -### [Coverage report](docs/coverage.pdf) +### [Coverage report](https://rmontanana.github.io/bayesnet/coverage/index.html) ## Diagrams diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 95acb53..afb2526 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -950,6 +950,7 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = /Users/rmontanana/Code/BayesNet/bayesnet +INPUT += /Users/rmontanana/Code/BayesNet/README.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1174,7 +1175,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = +USE_MDFILE_AS_MAINPAGE = README.md # The Fortran standard specifies that for fixed formatted Fortran code all # characters from position 72 are to be considered as comment. A common @@ -1424,7 +1425,8 @@ HTML_EXTRA_STYLESHEET = # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = +HTML_EXTRA_FILES = /Users/rmontanana/Code/BayesNet/diagrams +HTML_EXTRA_FILES += /Users/rmontanana/Code/BayesNet/logo.png # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. diff --git a/docs/coverage.pdf b/docs/coverage.pdf deleted file mode 100644 index 3d4b011b997af8efd7f0de9f86c01b278327c2db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22170 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 diff --git a/html/amber.png b/html/amber.png deleted file mode 100644 index 2cab170d8359081983a4e343848dfe06bc490f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^G2tW}LqE04T&+ z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`1M1^9%x{(levWG - - - - - - LCOV - BayesNet Coverage Report - bayesnet/BaseClassifier.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet - BaseClassifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::BaseClassifier::~BaseClassifier()1680
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/BaseClassifier.h.func.html b/html/bayesnet/BaseClassifier.h.func.html deleted file mode 100644 index 8418b7d..0000000 --- a/html/bayesnet/BaseClassifier.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/BaseClassifier.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet - BaseClassifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::BaseClassifier::~BaseClassifier()1680
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/BaseClassifier.h.gcov.frameset.html b/html/bayesnet/BaseClassifier.h.gcov.frameset.html deleted file mode 100644 index 92b4ff4..0000000 --- a/html/bayesnet/BaseClassifier.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/BaseClassifier.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/BaseClassifier.h.gcov.html b/html/bayesnet/BaseClassifier.h.gcov.html deleted file mode 100644 index 9d3ca81..0000000 --- a/html/bayesnet/BaseClassifier.h.gcov.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/BaseClassifier.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet - BaseClassifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #pragma once
    -       8              : #include <vector>
    -       9              : #include <torch/torch.h>
    -      10              : #include <nlohmann/json.hpp>
    -      11              : namespace bayesnet {
    -      12              :     enum status_t { NORMAL, WARNING, ERROR };
    -      13              :     class BaseClassifier {
    -      14              :     public:
    -      15              :         // X is nxm std::vector, y is nx1 std::vector
    -      16              :         virtual BaseClassifier& fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -      17              :         // X is nxm tensor, y is nx1 tensor
    -      18              :         virtual BaseClassifier& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -      19              :         virtual BaseClassifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) = 0;
    -      20              :         virtual BaseClassifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights) = 0;
    -      21         1680 :         virtual ~BaseClassifier() = default;
    -      22              :         torch::Tensor virtual predict(torch::Tensor& X) = 0;
    -      23              :         std::vector<int> virtual predict(std::vector<std::vector<int >>& X) = 0;
    -      24              :         torch::Tensor virtual predict_proba(torch::Tensor& X) = 0;
    -      25              :         std::vector<std::vector<double>> virtual predict_proba(std::vector<std::vector<int >>& X) = 0;
    -      26              :         status_t virtual getStatus() const = 0;
    -      27              :         float virtual score(std::vector<std::vector<int>>& X, std::vector<int>& y) = 0;
    -      28              :         float virtual score(torch::Tensor& X, torch::Tensor& y) = 0;
    -      29              :         int virtual getNumberOfNodes()const = 0;
    -      30              :         int virtual getNumberOfEdges()const = 0;
    -      31              :         int virtual getNumberOfStates() const = 0;
    -      32              :         int virtual getClassNumStates() const = 0;
    -      33              :         std::vector<std::string> virtual show() const = 0;
    -      34              :         std::vector<std::string> virtual graph(const std::string& title = "") const = 0;
    -      35              :         virtual std::string getVersion() = 0;
    -      36              :         std::vector<std::string> virtual topological_order() = 0;
    -      37              :         std::vector<std::string> virtual getNotes() const = 0;
    -      38              :         std::string virtual dump_cpt()const = 0;
    -      39              :         virtual void setHyperparameters(const nlohmann::json& hyperparameters) = 0;
    -      40              :         std::vector<std::string>& getValidHyperparameters() { return validHyperparameters; }
    -      41              :     protected:
    -      42              :         virtual void trainModel(const torch::Tensor& weights) = 0;
    -      43              :         std::vector<std::string> validHyperparameters;
    -      44              :     };
    -      45              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/BaseClassifier.h.gcov.overview.html b/html/bayesnet/BaseClassifier.h.gcov.overview.html deleted file mode 100644 index 57bcea7..0000000 --- a/html/bayesnet/BaseClassifier.h.gcov.overview.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/BaseClassifier.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/BaseClassifier.h.gcov.png b/html/bayesnet/BaseClassifier.h.gcov.png deleted file mode 100644 index 678d90ab3d0a236bbeba73a2beb5a625a0ec3075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL{LP)Llv@(RAP7an4sZ+U4(k5*R>trW(J)g!5|bV;7o@owv~ye>69~@*>5B3K1Bh;O z8j~XG{ul7%u^f-R8aT4=%?0q)jt7sZ^sqs}BT0c~VDgr-RB}G8Dz;*ziCwWl^Z;Iagw{v{Q>Rv)XW|gP-&>jbJYR$F|JoN#s z7`7MMsD!mAXspT#+K({KantZ5t@N6G<)Ay2$>bs!YWN$(Em;TG9_Db~Y;f{%9_@dV z*0NDdwxnR@Qq$_3@A^29`5Qgo`6JR2M3hB9u)NB1YMq?bY^<7N(W|Ace(`?c2uPaz Sr9RvM0000 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %126126
    Test Date:2024-05-06 17:54:04Functions:100.0 %2424
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Classifier::dump_cpt[abi:cxx11]() const4
    bayesnet::Classifier::topological_order[abi:cxx11]()4
    bayesnet::Classifier::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)16
    bayesnet::Classifier::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&)16
    bayesnet::Classifier::getNumberOfStates() const24
    bayesnet::Classifier::show[abi:cxx11]() const24
    bayesnet::Classifier::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)92
    bayesnet::Classifier::score(at::Tensor&, at::Tensor&)112
    bayesnet::Classifier::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)128
    bayesnet::Classifier::fit(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)136
    bayesnet::Classifier::getNumberOfEdges() const332
    bayesnet::Classifier::getNumberOfNodes() const332
    bayesnet::Classifier::buildDataset(at::Tensor&)340
    bayesnet::Classifier::getClassNumStates() const348
    bayesnet::Classifier::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)548
    bayesnet::Classifier::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&, at::Tensor const&)660
    bayesnet::Classifier::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)852
    bayesnet::Classifier::predict_proba(at::Tensor&)1484
    bayesnet::Classifier::addNodes()1576
    bayesnet::Classifier::trainModel(at::Tensor const&)1576
    bayesnet::Classifier::build(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&, at::Tensor const&)1760
    bayesnet::Classifier::checkFitParameters()1760
    bayesnet::Classifier::predict(at::Tensor&)1844
    bayesnet::Classifier::Classifier(bayesnet::Network)2240
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.cc.func.html b/html/bayesnet/classifiers/Classifier.cc.func.html deleted file mode 100644 index 711837d..0000000 --- a/html/bayesnet/classifiers/Classifier.cc.func.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %126126
    Test Date:2024-05-06 17:54:04Functions:100.0 %2424
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Classifier::Classifier(bayesnet::Network)2240
    bayesnet::Classifier::addNodes()1576
    bayesnet::Classifier::build(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&, at::Tensor const&)1760
    bayesnet::Classifier::buildDataset(at::Tensor&)340
    bayesnet::Classifier::checkFitParameters()1760
    bayesnet::Classifier::dump_cpt[abi:cxx11]() const4
    bayesnet::Classifier::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)128
    bayesnet::Classifier::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)852
    bayesnet::Classifier::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&, at::Tensor const&)660
    bayesnet::Classifier::fit(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)136
    bayesnet::Classifier::getClassNumStates() const348
    bayesnet::Classifier::getNumberOfEdges() const332
    bayesnet::Classifier::getNumberOfNodes() const332
    bayesnet::Classifier::getNumberOfStates() const24
    bayesnet::Classifier::predict(at::Tensor&)1844
    bayesnet::Classifier::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)16
    bayesnet::Classifier::predict_proba(at::Tensor&)1484
    bayesnet::Classifier::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)548
    bayesnet::Classifier::score(at::Tensor&, at::Tensor&)112
    bayesnet::Classifier::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&)16
    bayesnet::Classifier::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)92
    bayesnet::Classifier::show[abi:cxx11]() const24
    bayesnet::Classifier::topological_order[abi:cxx11]()4
    bayesnet::Classifier::trainModel(at::Tensor const&)1576
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.cc.gcov.frameset.html b/html/bayesnet/classifiers/Classifier.cc.gcov.frameset.html deleted file mode 100644 index ced4c8c..0000000 --- a/html/bayesnet/classifiers/Classifier.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/Classifier.cc.gcov.html b/html/bayesnet/classifiers/Classifier.cc.gcov.html deleted file mode 100644 index 96d250b..0000000 --- a/html/bayesnet/classifiers/Classifier.cc.gcov.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %126126
    Test Date:2024-05-06 17:54:04Functions:100.0 %2424
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <sstream>
    -       8              : #include "bayesnet/utils/bayesnetUtils.h"
    -       9              : #include "Classifier.h"
    -      10              : 
    -      11              : namespace bayesnet {
    -      12         2240 :     Classifier::Classifier(Network model) : model(model), m(0), n(0), metrics(Metrics()), fitted(false) {}
    -      13              :     const std::string CLASSIFIER_NOT_FITTED = "Classifier has not been fitted";
    -      14         1760 :     Classifier& Classifier::build(const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -      15              :     {
    -      16         1760 :         this->features = features;
    -      17         1760 :         this->className = className;
    -      18         1760 :         this->states = states;
    -      19         1760 :         m = dataset.size(1);
    -      20         1760 :         n = features.size();
    -      21         1760 :         checkFitParameters();
    -      22         1728 :         auto n_classes = states.at(className).size();
    -      23         1728 :         metrics = Metrics(dataset, features, className, n_classes);
    -      24         1728 :         model.initialize();
    -      25         1728 :         buildModel(weights);
    -      26         1728 :         trainModel(weights);
    -      27         1712 :         fitted = true;
    -      28         1712 :         return *this;
    -      29              :     }
    -      30          340 :     void Classifier::buildDataset(torch::Tensor& ytmp)
    -      31              :     {
    -      32              :         try {
    -      33          340 :             auto yresized = torch::transpose(ytmp.view({ ytmp.size(0), 1 }), 0, 1);
    -      34         1052 :             dataset = torch::cat({ dataset, yresized }, 0);
    -      35          340 :         }
    -      36           16 :         catch (const std::exception& e) {
    -      37           16 :             std::stringstream oss;
    -      38           16 :             oss << "* Error in X and y dimensions *\n";
    -      39           16 :             oss << "X dimensions: " << dataset.sizes() << "\n";
    -      40           16 :             oss << "y dimensions: " << ytmp.sizes();
    -      41           16 :             throw std::runtime_error(oss.str());
    -      42           32 :         }
    -      43          680 :     }
    -      44         1576 :     void Classifier::trainModel(const torch::Tensor& weights)
    -      45              :     {
    -      46         1576 :         model.fit(dataset, weights, features, className, states);
    -      47         1576 :     }
    -      48              :     // X is nxm where n is the number of features and m the number of samples
    -      49          128 :     Classifier& Classifier::fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -      50              :     {
    -      51          128 :         dataset = X;
    -      52          128 :         buildDataset(y);
    -      53          120 :         const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -      54          208 :         return build(features, className, states, weights);
    -      55          120 :     }
    -      56              :     // X is nxm where n is the number of features and m the number of samples
    -      57          136 :     Classifier& Classifier::fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -      58              :     {
    -      59          136 :         dataset = torch::zeros({ static_cast<int>(X.size()), static_cast<int>(X[0].size()) }, torch::kInt32);
    -      60          976 :         for (int i = 0; i < X.size(); ++i) {
    -      61         3360 :             dataset.index_put_({ i, "..." }, torch::tensor(X[i], torch::kInt32));
    -      62              :         }
    -      63          136 :         auto ytmp = torch::tensor(y, torch::kInt32);
    -      64          136 :         buildDataset(ytmp);
    -      65          128 :         const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -      66          240 :         return build(features, className, states, weights);
    -      67          992 :     }
    -      68          852 :     Classifier& Classifier::fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states)
    -      69              :     {
    -      70          852 :         this->dataset = dataset;
    -      71          852 :         const torch::Tensor weights = torch::full({ dataset.size(1) }, 1.0 / dataset.size(1), torch::kDouble);
    -      72         1704 :         return build(features, className, states, weights);
    -      73          852 :     }
    -      74          660 :     Classifier& Classifier::fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -      75              :     {
    -      76          660 :         this->dataset = dataset;
    -      77          660 :         return build(features, className, states, weights);
    -      78              :     }
    -      79         1760 :     void Classifier::checkFitParameters()
    -      80              :     {
    -      81         1760 :         if (torch::is_floating_point(dataset)) {
    -      82            8 :             throw std::invalid_argument("dataset (X, y) must be of type Integer");
    -      83              :         }
    -      84         1752 :         if (dataset.size(0) - 1 != features.size()) {
    -      85            8 :             throw std::invalid_argument("Classifier: X " + std::to_string(dataset.size(0) - 1) + " and features " + std::to_string(features.size()) + " must have the same number of features");
    -      86              :         }
    -      87         1744 :         if (states.find(className) == states.end()) {
    -      88            8 :             throw std::invalid_argument("class name not found in states");
    -      89              :         }
    -      90        32996 :         for (auto feature : features) {
    -      91        31268 :             if (states.find(feature) == states.end()) {
    -      92            8 :                 throw std::invalid_argument("feature [" + feature + "] not found in states");
    -      93              :             }
    -      94        31268 :         }
    -      95         1728 :     }
    -      96         1844 :     torch::Tensor Classifier::predict(torch::Tensor& X)
    -      97              :     {
    -      98         1844 :         if (!fitted) {
    -      99           16 :             throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -     100              :         }
    -     101         1828 :         return model.predict(X);
    -     102              :     }
    -     103           16 :     std::vector<int> Classifier::predict(std::vector<std::vector<int>>& X)
    -     104              :     {
    -     105           16 :         if (!fitted) {
    -     106            8 :             throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -     107              :         }
    -     108            8 :         auto m_ = X[0].size();
    -     109            8 :         auto n_ = X.size();
    -     110            8 :         std::vector<std::vector<int>> Xd(n_, std::vector<int>(m_, 0));
    -     111           40 :         for (auto i = 0; i < n_; i++) {
    -     112           64 :             Xd[i] = std::vector<int>(X[i].begin(), X[i].end());
    -     113              :         }
    -     114            8 :         auto yp = model.predict(Xd);
    -     115           16 :         return yp;
    -     116            8 :     }
    -     117         1484 :     torch::Tensor Classifier::predict_proba(torch::Tensor& X)
    -     118              :     {
    -     119         1484 :         if (!fitted) {
    -     120            8 :             throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -     121              :         }
    -     122         1476 :         return model.predict_proba(X);
    -     123              :     }
    -     124          548 :     std::vector<std::vector<double>> Classifier::predict_proba(std::vector<std::vector<int>>& X)
    -     125              :     {
    -     126          548 :         if (!fitted) {
    -     127            8 :             throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -     128              :         }
    -     129          540 :         auto m_ = X[0].size();
    -     130          540 :         auto n_ = X.size();
    -     131          540 :         std::vector<std::vector<int>> Xd(n_, std::vector<int>(m_, 0));
    -     132              :         // Convert to nxm vector
    -     133         5040 :         for (auto i = 0; i < n_; i++) {
    -     134         9000 :             Xd[i] = std::vector<int>(X[i].begin(), X[i].end());
    -     135              :         }
    -     136          540 :         auto yp = model.predict_proba(Xd);
    -     137         1080 :         return yp;
    -     138          540 :     }
    -     139          112 :     float Classifier::score(torch::Tensor& X, torch::Tensor& y)
    -     140              :     {
    -     141          112 :         torch::Tensor y_pred = predict(X);
    -     142          208 :         return (y_pred == y).sum().item<float>() / y.size(0);
    -     143          104 :     }
    -     144           16 :     float Classifier::score(std::vector<std::vector<int>>& X, std::vector<int>& y)
    -     145              :     {
    -     146           16 :         if (!fitted) {
    -     147            8 :             throw std::logic_error(CLASSIFIER_NOT_FITTED);
    -     148              :         }
    -     149            8 :         return model.score(X, y);
    -     150              :     }
    -     151           24 :     std::vector<std::string> Classifier::show() const
    -     152              :     {
    -     153           24 :         return model.show();
    -     154              :     }
    -     155         1576 :     void Classifier::addNodes()
    -     156              :     {
    -     157              :         // Add all nodes to the network
    -     158        30872 :         for (const auto& feature : features) {
    -     159        29296 :             model.addNode(feature);
    -     160              :         }
    -     161         1576 :         model.addNode(className);
    -     162         1576 :     }
    -     163          332 :     int Classifier::getNumberOfNodes() const
    -     164              :     {
    -     165              :         // Features does not include class
    -     166          332 :         return fitted ? model.getFeatures().size() : 0;
    -     167              :     }
    -     168          332 :     int Classifier::getNumberOfEdges() const
    -     169              :     {
    -     170          332 :         return fitted ? model.getNumEdges() : 0;
    -     171              :     }
    -     172           24 :     int Classifier::getNumberOfStates() const
    -     173              :     {
    -     174           24 :         return fitted ? model.getStates() : 0;
    -     175              :     }
    -     176          348 :     int Classifier::getClassNumStates() const
    -     177              :     {
    -     178          348 :         return fitted ? model.getClassNumStates() : 0;
    -     179              :     }
    -     180            4 :     std::vector<std::string> Classifier::topological_order()
    -     181              :     {
    -     182            4 :         return model.topological_sort();
    -     183              :     }
    -     184            4 :     std::string Classifier::dump_cpt() const
    -     185              :     {
    -     186            4 :         return model.dump_cpt();
    -     187              :     }
    -     188           92 :     void Classifier::setHyperparameters(const nlohmann::json& hyperparameters)
    -     189              :     {
    -     190           92 :         if (!hyperparameters.empty()) {
    -     191            8 :             throw std::invalid_argument("Invalid hyperparameters" + hyperparameters.dump());
    -     192              :         }
    -     193           84 :     }
    -     194              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.cc.gcov.overview.html b/html/bayesnet/classifiers/Classifier.cc.gcov.overview.html deleted file mode 100644 index f6fa969..0000000 --- a/html/bayesnet/classifiers/Classifier.cc.gcov.overview.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/Classifier.cc.gcov.png b/html/bayesnet/classifiers/Classifier.cc.gcov.png deleted file mode 100644 index 5148c17383ab61be77bd63024e1da3aea30384c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 852 zcmV-a1FQUrP)k7 zR9J=WSqXB(APlsB;C#XQf%yO5YJ>#hKI}BjOiAk`o<&-nV6wgTS9@$cBH->W$8|mA z#*qLIHMuwxN8oBfBg)@32#9i92Fe}# zvQrI;M1_hzyDvx*@f;bOy$Cz2!wdkKSr@LU*}sprrFdZ0&v1P@R9TIyyh z&X~!Z;s`(;m^=s+9+HXZQUFPAsWnSfLU_zVYrgbMSUms?E0A7|_?k!b)Y-BaGSv*#uye%L)AEq)L<{%|IF1p1o-B6kzJUGEfE_K3nl;|=?Y)m6ho z_Vgv*E-n+**B50^R0lQSbaBN&PRAFy=X1pc#yy}nbpNd?EE9cG6=rc(&zUO{b!GET zr)i8*X#AA522g+2Q#$aAYDQ8TtJSdDQhcqX=R)(bE*=K0b5xD4I&1O}aHrR6Kisbw z)k8q(BH;5dk9+pSUSl~O>#o^Tek`=7I}+KC^m7F{)Bace82vsW1lD)WPa9L@SU4QJ z#W5?a`y5N>cYlpziRbMm#p52wlAIeHqebhfe5~`E=a}ypF?lz)4qbX1q(pf*DRJ*_ ecw!%eo#zjnwPqClXgALQ0000 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Classifier::getVersion[abi:cxx11]()32
    bayesnet::Classifier::getNotes[abi:cxx11]() const80
    bayesnet::Classifier::getStatus() const128
    bayesnet::Classifier::~Classifier()1680
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.h.func.html b/html/bayesnet/classifiers/Classifier.h.func.html deleted file mode 100644 index bb4a025..0000000 --- a/html/bayesnet/classifiers/Classifier.h.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Classifier::getNotes[abi:cxx11]() const80
    bayesnet::Classifier::getStatus() const128
    bayesnet::Classifier::getVersion[abi:cxx11]()32
    bayesnet::Classifier::~Classifier()1680
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.h.gcov.frameset.html b/html/bayesnet/classifiers/Classifier.h.gcov.frameset.html deleted file mode 100644 index 5ec80ed..0000000 --- a/html/bayesnet/classifiers/Classifier.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/Classifier.h.gcov.html b/html/bayesnet/classifiers/Classifier.h.gcov.html deleted file mode 100644 index 6d0578d..0000000 --- a/html/bayesnet/classifiers/Classifier.h.gcov.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Classifier.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef CLASSIFIER_H
    -       8              : #define CLASSIFIER_H
    -       9              : #include <torch/torch.h>
    -      10              : #include "bayesnet/utils/BayesMetrics.h"
    -      11              : #include "bayesnet/network/Network.h"
    -      12              : #include "bayesnet/BaseClassifier.h"
    -      13              : 
    -      14              : namespace bayesnet {
    -      15              :     class Classifier : public BaseClassifier {
    -      16              :     public:
    -      17              :         Classifier(Network model);
    -      18         1680 :         virtual ~Classifier() = default;
    -      19              :         Classifier& fit(std::vector<std::vector<int>>& X, std::vector<int>& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -      20              :         Classifier& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -      21              :         Classifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states) override;
    -      22              :         Classifier& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights) override;
    -      23              :         void addNodes();
    -      24              :         int getNumberOfNodes() const override;
    -      25              :         int getNumberOfEdges() const override;
    -      26              :         int getNumberOfStates() const override;
    -      27              :         int getClassNumStates() const override;
    -      28              :         torch::Tensor predict(torch::Tensor& X) override;
    -      29              :         std::vector<int> predict(std::vector<std::vector<int>>& X) override;
    -      30              :         torch::Tensor predict_proba(torch::Tensor& X) override;
    -      31              :         std::vector<std::vector<double>> predict_proba(std::vector<std::vector<int>>& X) override;
    -      32          128 :         status_t getStatus() const override { return status; }
    -      33           96 :         std::string getVersion() override { return { project_version.begin(), project_version.end() }; };
    -      34              :         float score(torch::Tensor& X, torch::Tensor& y) override;
    -      35              :         float score(std::vector<std::vector<int>>& X, std::vector<int>& y) override;
    -      36              :         std::vector<std::string> show() const override;
    -      37              :         std::vector<std::string> topological_order()  override;
    -      38           80 :         std::vector<std::string> getNotes() const override { return notes; }
    -      39              :         std::string dump_cpt() const override;
    -      40              :         void setHyperparameters(const nlohmann::json& hyperparameters) override; //For classifiers that don't have hyperparameters
    -      41              :     protected:
    -      42              :         bool fitted;
    -      43              :         unsigned int m, n; // m: number of samples, n: number of features
    -      44              :         Network model;
    -      45              :         Metrics metrics;
    -      46              :         std::vector<std::string> features;
    -      47              :         std::string className;
    -      48              :         std::map<std::string, std::vector<int>> states;
    -      49              :         torch::Tensor dataset; // (n+1)xm tensor
    -      50              :         status_t status = NORMAL;
    -      51              :         std::vector<std::string> notes; // Used to store messages occurred during the fit process
    -      52              :         void checkFitParameters();
    -      53              :         virtual void buildModel(const torch::Tensor& weights) = 0;
    -      54              :         void trainModel(const torch::Tensor& weights) override;
    -      55              :         void buildDataset(torch::Tensor& y);
    -      56              :     private:
    -      57              :         Classifier& build(const std::vector<std::string>& features, const std::string& className, std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -      58              :     };
    -      59              : }
    -      60              : #endif
    -      61              : 
    -      62              : 
    -      63              : 
    -      64              : 
    -      65              : 
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Classifier.h.gcov.overview.html b/html/bayesnet/classifiers/Classifier.h.gcov.overview.html deleted file mode 100644 index 1810955..0000000 --- a/html/bayesnet/classifiers/Classifier.h.gcov.overview.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Classifier.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/Classifier.h.gcov.png b/html/bayesnet/classifiers/Classifier.h.gcov.png deleted file mode 100644 index aad5b614c1c20cf63cd39a4f086005bf0ed1caf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqJPP)4l~ERiAP7Zc2e^gYf$o2AQ!0oG%FO5RQP#QQdq{Z&2>ZBN3?S4CK3Aj{IDsf8 zt1)Cmo__#$8r{LVPgB1ES*9D@>R&;lLMwRCdJNjW01mV@0C1)BS+;(4d2TZcx}V57 zr(7bH`>h0ljEac-D&^Rh#x4NGfW|6VpZW{7`vnNT%^S0UJ?9sYwCQ{02PfN9%7vD7 znF0sNYepmKoJRY3a8tzGu92GP9Yni(Iu}JFrQAT#W87SIkSJr-h^r`Ww(5K_1G}Q@ zj;|4BGo-8;D*|6bshXc%xB9H#S6h1gkxx5Cn;67q9%BFHPp;uD9AGUEQ1#kSfXDMl zf{w3nF8CHihx@gL^?)@%*`GBJ>4$9z(0x)4`* - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.3 %5452
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDB::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const8
    bayesnet::KDB::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)12
    bayesnet::KDB::buildModel(at::Tensor const&)52
    bayesnet::KDB::KDB(int, float)148
    bayesnet::KDB::add_m_edges(int, std::vector<int, std::allocator<int> >&, at::Tensor&)344
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.cc.func.html b/html/bayesnet/classifiers/KDB.cc.func.html deleted file mode 100644 index 2a880ae..0000000 --- a/html/bayesnet/classifiers/KDB.cc.func.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.3 %5452
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDB::KDB(int, float)148
    bayesnet::KDB::add_m_edges(int, std::vector<int, std::allocator<int> >&, at::Tensor&)344
    bayesnet::KDB::buildModel(at::Tensor const&)52
    bayesnet::KDB::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const8
    bayesnet::KDB::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)12
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.cc.gcov.frameset.html b/html/bayesnet/classifiers/KDB.cc.gcov.frameset.html deleted file mode 100644 index c87890b..0000000 --- a/html/bayesnet/classifiers/KDB.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/KDB.cc.gcov.html b/html/bayesnet/classifiers/KDB.cc.gcov.html deleted file mode 100644 index 910f3e9..0000000 --- a/html/bayesnet/classifiers/KDB.cc.gcov.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.3 %5452
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "KDB.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10          148 :     KDB::KDB(int k, float theta) : Classifier(Network()), k(k), theta(theta)
    -      11              :     {
    -      12          444 :         validHyperparameters = { "k", "theta" };
    -      13              : 
    -      14          444 :     }
    -      15           12 :     void KDB::setHyperparameters(const nlohmann::json& hyperparameters_)
    -      16              :     {
    -      17           12 :         auto hyperparameters = hyperparameters_;
    -      18           12 :         if (hyperparameters.contains("k")) {
    -      19            4 :             k = hyperparameters["k"];
    -      20            4 :             hyperparameters.erase("k");
    -      21              :         }
    -      22           12 :         if (hyperparameters.contains("theta")) {
    -      23            4 :             theta = hyperparameters["theta"];
    -      24            4 :             hyperparameters.erase("theta");
    -      25              :         }
    -      26           12 :         Classifier::setHyperparameters(hyperparameters);
    -      27           12 :     }
    -      28           52 :     void KDB::buildModel(const torch::Tensor& weights)
    -      29              :     {
    -      30              :         /*
    -      31              :         1. For each feature Xi, compute mutual information, I(X;C),
    -      32              :         where C is the class.
    -      33              :         2. Compute class conditional mutual information I(Xi;XjIC), f or each
    -      34              :         pair of features Xi and Xj, where i#j.
    -      35              :         3. Let the used variable list, S, be empty.
    -      36              :         4. Let the DAG network being constructed, BN, begin with a single
    -      37              :         class node, C.
    -      38              :         5. Repeat until S includes all domain features
    -      39              :         5.1. Select feature Xmax which is not in S and has the largest value
    -      40              :         I(Xmax;C).
    -      41              :         5.2. Add a node to BN representing Xmax.
    -      42              :         5.3. Add an arc from C to Xmax in BN.
    -      43              :         5.4. Add m = min(lSl,/c) arcs from m distinct features Xj in S with
    -      44              :         the highest value for I(Xmax;X,jC).
    -      45              :         5.5. Add Xmax to S.
    -      46              :         Compute the conditional probabilility infered by the structure of BN by
    -      47              :         using counts from DB, and output BN.
    -      48              :         */
    -      49              :         // 1. For each feature Xi, compute mutual information, I(X;C),
    -      50              :         // where C is the class.
    -      51           52 :         addNodes();
    -      52          156 :         const torch::Tensor& y = dataset.index({ -1, "..." });
    -      53           52 :         std::vector<double> mi;
    -      54          396 :         for (auto i = 0; i < features.size(); i++) {
    -      55         1032 :             torch::Tensor firstFeature = dataset.index({ i, "..." });
    -      56          344 :             mi.push_back(metrics.mutualInformation(firstFeature, y, weights));
    -      57          344 :         }
    -      58              :         // 2. Compute class conditional mutual information I(Xi;XjIC), f or each
    -      59           52 :         auto conditionalEdgeWeights = metrics.conditionalEdge(weights);
    -      60              :         // 3. Let the used variable list, S, be empty.
    -      61           52 :         std::vector<int> S;
    -      62              :         // 4. Let the DAG network being constructed, BN, begin with a single
    -      63              :         // class node, C.
    -      64              :         // 5. Repeat until S includes all domain features
    -      65              :         // 5.1. Select feature Xmax which is not in S and has the largest value
    -      66              :         // I(Xmax;C).
    -      67           52 :         auto order = argsort(mi);
    -      68          396 :         for (auto idx : order) {
    -      69              :             // 5.2. Add a node to BN representing Xmax.
    -      70              :             // 5.3. Add an arc from C to Xmax in BN.
    -      71          344 :             model.addEdge(className, features[idx]);
    -      72              :             // 5.4. Add m = min(lSl,/c) arcs from m distinct features Xj in S with
    -      73              :             // the highest value for I(Xmax;X,jC).
    -      74          344 :             add_m_edges(idx, S, conditionalEdgeWeights);
    -      75              :             // 5.5. Add Xmax to S.
    -      76          344 :             S.push_back(idx);
    -      77              :         }
    -      78          448 :     }
    -      79          344 :     void KDB::add_m_edges(int idx, std::vector<int>& S, torch::Tensor& weights)
    -      80              :     {
    -      81          344 :         auto n_edges = std::min(k, static_cast<int>(S.size()));
    -      82          344 :         auto cond_w = clone(weights);
    -      83          344 :         bool exit_cond = k == 0;
    -      84          344 :         int num = 0;
    -      85         1004 :         while (!exit_cond) {
    -      86         2640 :             auto max_minfo = argmax(cond_w.index({ idx, "..." })).item<int>();
    -      87          660 :             auto belongs = find(S.begin(), S.end(), max_minfo) != S.end();
    -      88         1764 :             if (belongs && cond_w.index({ idx, max_minfo }).item<float>() > theta) {
    -      89              :                 try {
    -      90          320 :                     model.addEdge(features[max_minfo], features[idx]);
    -      91          320 :                     num++;
    -      92              :                 }
    -      93            0 :                 catch (const std::invalid_argument& e) {
    -      94              :                     // Loops are not allowed
    -      95            0 :                 }
    -      96              :             }
    -      97         2640 :             cond_w.index_put_({ idx, max_minfo }, -1);
    -      98         1980 :             auto candidates_mask = cond_w.index({ idx, "..." }).gt(theta);
    -      99          660 :             auto candidates = candidates_mask.nonzero();
    -     100          660 :             exit_cond = num == n_edges || candidates.size(0) == 0;
    -     101          660 :         }
    -     102         2692 :     }
    -     103            8 :     std::vector<std::string> KDB::graph(const std::string& title) const
    -     104              :     {
    -     105            8 :         std::string header{ title };
    -     106            8 :         if (title == "KDB") {
    -     107            8 :             header += " (k=" + std::to_string(k) + ", theta=" + std::to_string(theta) + ")";
    -     108              :         }
    -     109           16 :         return model.graph(header);
    -     110            8 :     }
    -     111              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.cc.gcov.overview.html b/html/bayesnet/classifiers/KDB.cc.gcov.overview.html deleted file mode 100644 index 4ee7aca..0000000 --- a/html/bayesnet/classifiers/KDB.cc.gcov.overview.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/KDB.cc.gcov.png b/html/bayesnet/classifiers/KDB.cc.gcov.png deleted file mode 100644 index 1e8717528aa9f23720a7ec9fed3f022317b5778a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmV+}1JV46P)Soscaz?j^7mFBT)oyidrfIH#z_t@E`xYoPudGGD9 zyUT}r99RW>*A(>DH&xtcgaO;0L?gGdyhnSxRNE2YrjmlcJ8I05=I8(| z#%R&?jFIa?IXSro#^ghZ0$BUN}5cc*ninQQ4DDhL(dr4QM)NWJOb+m^0f(PKl`09>R;_vje7IWwB%D(AY}@`$sVRdI{7NHQS-(`5t{R$IwM?&N=(>$VT%OcLdN@sKO$+YIQay(i6^)8pV! s$jXCHUIzs07*qoM6N<$g7u4utpET3 diff --git a/html/bayesnet/classifiers/KDB.h.func-c.html b/html/bayesnet/classifiers/KDB.h.func-c.html deleted file mode 100644 index 6c28413..0000000 --- a/html/bayesnet/classifiers/KDB.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDB::~KDB()44
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.h.func.html b/html/bayesnet/classifiers/KDB.h.func.html deleted file mode 100644 index 76df4e6..0000000 --- a/html/bayesnet/classifiers/KDB.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDB::~KDB()44
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.h.gcov.frameset.html b/html/bayesnet/classifiers/KDB.h.gcov.frameset.html deleted file mode 100644 index a03d09b..0000000 --- a/html/bayesnet/classifiers/KDB.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/KDB.h.gcov.html b/html/bayesnet/classifiers/KDB.h.gcov.html deleted file mode 100644 index b054798..0000000 --- a/html/bayesnet/classifiers/KDB.h.gcov.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDB.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef KDB_H
    -       8              : #define KDB_H
    -       9              : #include <torch/torch.h>
    -      10              : #include "bayesnet/utils/bayesnetUtils.h"
    -      11              : #include "Classifier.h"
    -      12              : namespace bayesnet {
    -      13              :     class KDB : public Classifier {
    -      14              :     private:
    -      15              :         int k;
    -      16              :         float theta;
    -      17              :         void add_m_edges(int idx, std::vector<int>& S, torch::Tensor& weights);
    -      18              :     protected:
    -      19              :         void buildModel(const torch::Tensor& weights) override;
    -      20              :     public:
    -      21              :         explicit KDB(int k, float theta = 0.03);
    -      22           44 :         virtual ~KDB() = default;
    -      23              :         void setHyperparameters(const nlohmann::json& hyperparameters_) override;
    -      24              :         std::vector<std::string> graph(const std::string& name = "KDB") const override;
    -      25              :     };
    -      26              : }
    -      27              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDB.h.gcov.overview.html b/html/bayesnet/classifiers/KDB.h.gcov.overview.html deleted file mode 100644 index 346dd56..0000000 --- a/html/bayesnet/classifiers/KDB.h.gcov.overview.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDB.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/KDB.h.gcov.png b/html/bayesnet/classifiers/KDB.h.gcov.png deleted file mode 100644 index 835cfa8a165580ddc4862ec2e7f3119abe6aa75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIx!VDxO7l;}HDTx4|5ZC|z|E~gq##|=FrKS`~8>?jhwK>H7SoD0wN - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDBLd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::KDBLd::predict(at::Tensor&)16
    bayesnet::KDBLd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::KDBLd::KDBLd(int)68
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.cc.func.html b/html/bayesnet/classifiers/KDBLd.cc.func.html deleted file mode 100644 index 3a04439..0000000 --- a/html/bayesnet/classifiers/KDBLd.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDBLd::KDBLd(int)68
    bayesnet::KDBLd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::KDBLd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::KDBLd::predict(at::Tensor&)16
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.cc.gcov.frameset.html b/html/bayesnet/classifiers/KDBLd.cc.gcov.frameset.html deleted file mode 100644 index 8f6d341..0000000 --- a/html/bayesnet/classifiers/KDBLd.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/KDBLd.cc.gcov.html b/html/bayesnet/classifiers/KDBLd.cc.gcov.html deleted file mode 100644 index 0375be3..0000000 --- a/html/bayesnet/classifiers/KDBLd.cc.gcov.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "KDBLd.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10           68 :     KDBLd::KDBLd(int k) : KDB(k), Proposal(dataset, features, className) {}
    -      11           20 :     KDBLd& KDBLd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      12              :     {
    -      13           20 :         checkInput(X_, y_);
    -      14           20 :         features = features_;
    -      15           20 :         className = className_;
    -      16           20 :         Xf = X_;
    -      17           20 :         y = y_;
    -      18              :         // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -      19           20 :         states = fit_local_discretization(y);
    -      20              :         // We have discretized the input data
    -      21              :         // 1st we need to fit the model to build the normal KDB structure, KDB::fit initializes the base Bayesian network
    -      22           20 :         KDB::fit(dataset, features, className, states);
    -      23           20 :         states = localDiscretizationProposal(states, model);
    -      24           20 :         return *this;
    -      25              :     }
    -      26           16 :     torch::Tensor KDBLd::predict(torch::Tensor& X)
    -      27              :     {
    -      28           16 :         auto Xt = prepareX(X);
    -      29           32 :         return KDB::predict(Xt);
    -      30           16 :     }
    -      31            4 :     std::vector<std::string> KDBLd::graph(const std::string& name) const
    -      32              :     {
    -      33            4 :         return KDB::graph(name);
    -      34              :     }
    -      35              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.cc.gcov.overview.html b/html/bayesnet/classifiers/KDBLd.cc.gcov.overview.html deleted file mode 100644 index 93ed692..0000000 --- a/html/bayesnet/classifiers/KDBLd.cc.gcov.overview.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/KDBLd.cc.gcov.png b/html/bayesnet/classifiers/KDBLd.cc.gcov.png deleted file mode 100644 index 286a27019b0764dc207924edb2c64e4ed899a1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$G!VDxoc24*Rq$C1-LR|m<|Gx?dmcNgUef6J# zVHHpuOr7)IycEdhEbxddW?X?_wfUrhg10?g978O6*G}o?Wme>9>*p@~=`U{-dVK__4IDYRQ>Qh2|dl8L&3VDY`$$WP-{}O-+TDcaqowpivPZJFWsFMQJ!R16nb6soYp`3$N2cq|1sI} Y2M^EZc3bCp7U)d|Pgg&ebxsLQ02nokZ2$lO diff --git a/html/bayesnet/classifiers/KDBLd.h.func-c.html b/html/bayesnet/classifiers/KDBLd.h.func-c.html deleted file mode 100644 index ca49f19..0000000 --- a/html/bayesnet/classifiers/KDBLd.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDBLd::~KDBLd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.h.func.html b/html/bayesnet/classifiers/KDBLd.h.func.html deleted file mode 100644 index ca196e4..0000000 --- a/html/bayesnet/classifiers/KDBLd.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::KDBLd::~KDBLd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.h.gcov.frameset.html b/html/bayesnet/classifiers/KDBLd.h.gcov.frameset.html deleted file mode 100644 index 82ae19e..0000000 --- a/html/bayesnet/classifiers/KDBLd.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/KDBLd.h.gcov.html b/html/bayesnet/classifiers/KDBLd.h.gcov.html deleted file mode 100644 index df42bea..0000000 --- a/html/bayesnet/classifiers/KDBLd.h.gcov.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - KDBLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef KDBLD_H
    -       8              : #define KDBLD_H
    -       9              : #include "Proposal.h"
    -      10              : #include "KDB.h"
    -      11              : 
    -      12              : namespace bayesnet {
    -      13              :     class KDBLd : public KDB, public Proposal {
    -      14              :     private:
    -      15              :     public:
    -      16              :         explicit KDBLd(int k);
    -      17           20 :         virtual ~KDBLd() = default;
    -      18              :         KDBLd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -      19              :         std::vector<std::string> graph(const std::string& name = "KDB") const override;
    -      20              :         torch::Tensor predict(torch::Tensor& X) override;
    -      21              :         static inline std::string version() { return "0.0.1"; };
    -      22              :     };
    -      23              : }
    -      24              : #endif // !KDBLD_H
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/KDBLd.h.gcov.overview.html b/html/bayesnet/classifiers/KDBLd.h.gcov.overview.html deleted file mode 100644 index 531b1ee..0000000 --- a/html/bayesnet/classifiers/KDBLd.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/KDBLd.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/KDBLd.h.gcov.png b/html/bayesnet/classifiers/KDBLd.h.gcov.png deleted file mode 100644 index d6405077fd60f86a990aa36ffd06cdaa68da103a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIl!VDzmo21VNaRPioT>t<7zX}MJzmJW5^`C)Z z6;K>Zo%7zj6v*Z*@Q5sCVBk9f!i-b3`J{n@(>+}rLo_DNoz%#CK!Jm$w7I->m*dU) z?MbXhj)h(F&+4%J`g?+x-hHn{oM&no*I(eZaoBO#+t>Wix%>nA{fV7>zpMXmNGd+8 zC9!qa^tRX{hE#zK&rFpgB>9$0ai!nUZ2rtAtD|J~b8%F3sm{^_=e)U5_gZr&+uEL8 z_pPh@j32-JE($l}_s0eToyg$n>gTe~DWM4f DrkG_O diff --git a/html/bayesnet/classifiers/Proposal.cc.func-c.html b/html/bayesnet/classifiers/Proposal.cc.func-c.html deleted file mode 100644 index b6fcac4..0000000 --- a/html/bayesnet/classifiers/Proposal.cc.func-c.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Proposal.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Proposal.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.7 %8684
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Proposal::prepareX(at::Tensor&)168
    bayesnet::Proposal::~Proposal()200
    bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)212
    bayesnet::Proposal::checkInput(at::Tensor const&, at::Tensor const&)228
    bayesnet::Proposal::fit_local_discretization[abi:cxx11](at::Tensor const&)232
    bayesnet::Proposal::Proposal(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)424
    auto bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)::{lambda(auto:1 const&)#2}::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const1372
    auto bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const2696
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Proposal.cc.func.html b/html/bayesnet/classifiers/Proposal.cc.func.html deleted file mode 100644 index 01294d6..0000000 --- a/html/bayesnet/classifiers/Proposal.cc.func.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Proposal.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Proposal.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.7 %8684
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    auto bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const2696
    auto bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)::{lambda(auto:1 const&)#2}::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const1372
    bayesnet::Proposal::Proposal(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)424
    bayesnet::Proposal::checkInput(at::Tensor const&, at::Tensor const&)228
    bayesnet::Proposal::fit_local_discretization[abi:cxx11](at::Tensor const&)232
    bayesnet::Proposal::localDiscretizationProposal(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, bayesnet::Network&)212
    bayesnet::Proposal::prepareX(at::Tensor&)168
    bayesnet::Proposal::~Proposal()200
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Proposal.cc.gcov.frameset.html b/html/bayesnet/classifiers/Proposal.cc.gcov.frameset.html deleted file mode 100644 index 5eb6be5..0000000 --- a/html/bayesnet/classifiers/Proposal.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Proposal.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/Proposal.cc.gcov.html b/html/bayesnet/classifiers/Proposal.cc.gcov.html deleted file mode 100644 index fa0ef3f..0000000 --- a/html/bayesnet/classifiers/Proposal.cc.gcov.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Proposal.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - Proposal.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.7 %8684
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <ArffFiles.h>
    -       8              : #include "Proposal.h"
    -       9              : 
    -      10              : namespace bayesnet {
    -      11          424 :     Proposal::Proposal(torch::Tensor& dataset_, std::vector<std::string>& features_, std::string& className_) : pDataset(dataset_), pFeatures(features_), pClassName(className_) {}
    -      12          200 :     Proposal::~Proposal()
    -      13              :     {
    -      14         1896 :         for (auto& [key, value] : discretizers) {
    -      15         1696 :             delete value;
    -      16              :         }
    -      17          200 :     }
    -      18          228 :     void Proposal::checkInput(const torch::Tensor& X, const torch::Tensor& y)
    -      19              :     {
    -      20          228 :         if (!torch::is_floating_point(X)) {
    -      21            0 :             throw std::invalid_argument("X must be a floating point tensor");
    -      22              :         }
    -      23          228 :         if (torch::is_floating_point(y)) {
    -      24            0 :             throw std::invalid_argument("y must be an integer tensor");
    -      25              :         }
    -      26          228 :     }
    -      27          212 :     map<std::string, std::vector<int>> Proposal::localDiscretizationProposal(const map<std::string, std::vector<int>>& oldStates, Network& model)
    -      28              :     {
    -      29              :         // order of local discretization is important. no good 0, 1, 2...
    -      30              :         // although we rediscretize features after the local discretization of every feature
    -      31          212 :         auto order = model.topological_sort();
    -      32          212 :         auto& nodes = model.getNodes();
    -      33          212 :         map<std::string, std::vector<int>> states = oldStates;
    -      34          212 :         std::vector<int> indicesToReDiscretize;
    -      35          212 :         bool upgrade = false; // Flag to check if we need to upgrade the model
    -      36         1776 :         for (auto feature : order) {
    -      37         1564 :             auto nodeParents = nodes[feature]->getParents();
    -      38         1564 :             if (nodeParents.size() < 2) continue; // Only has class as parent
    -      39         1324 :             upgrade = true;
    -      40         1324 :             int index = find(pFeatures.begin(), pFeatures.end(), feature) - pFeatures.begin();
    -      41         1324 :             indicesToReDiscretize.push_back(index); // We need to re-discretize this feature
    -      42         1324 :             std::vector<std::string> parents;
    -      43         4020 :             transform(nodeParents.begin(), nodeParents.end(), back_inserter(parents), [](const auto& p) { return p->getName(); });
    -      44              :             // Remove class as parent as it will be added later
    -      45         1324 :             parents.erase(remove(parents.begin(), parents.end(), pClassName), parents.end());
    -      46              :             // Get the indices of the parents
    -      47         1324 :             std::vector<int> indices;
    -      48         1324 :             indices.push_back(-1); // Add class index
    -      49         2696 :             transform(parents.begin(), parents.end(), back_inserter(indices), [&](const auto& p) {return find(pFeatures.begin(), pFeatures.end(), p) - pFeatures.begin(); });
    -      50              :             // Now we fit the discretizer of the feature, conditioned on its parents and the class i.e. discretizer.fit(X[index], X[indices] + y)
    -      51         1324 :             std::vector<std::string> yJoinParents(Xf.size(1));
    -      52         4020 :             for (auto idx : indices) {
    -      53       958640 :                 for (int i = 0; i < Xf.size(1); ++i) {
    -      54      2867832 :                     yJoinParents[i] += to_string(pDataset.index({ idx, i }).item<int>());
    -      55              :                 }
    -      56              :             }
    -      57         1324 :             auto arff = ArffFiles();
    -      58         1324 :             auto yxv = arff.factorize(yJoinParents);
    -      59         2648 :             auto xvf_ptr = Xf.index({ index }).data_ptr<float>();
    -      60         1324 :             auto xvf = std::vector<mdlp::precision_t>(xvf_ptr, xvf_ptr + Xf.size(1));
    -      61         1324 :             discretizers[feature]->fit(xvf, yxv);
    -      62         1804 :         }
    -      63          212 :         if (upgrade) {
    -      64              :             // Discretize again X (only the affected indices) with the new fitted discretizers
    -      65         1536 :             for (auto index : indicesToReDiscretize) {
    -      66         2648 :                 auto Xt_ptr = Xf.index({ index }).data_ptr<float>();
    -      67         1324 :                 auto Xt = std::vector<float>(Xt_ptr, Xt_ptr + Xf.size(1));
    -      68         5296 :                 pDataset.index_put_({ index, "..." }, torch::tensor(discretizers[pFeatures[index]]->transform(Xt)));
    -      69         1324 :                 auto xStates = std::vector<int>(discretizers[pFeatures[index]]->getCutPoints().size() + 1);
    -      70         1324 :                 iota(xStates.begin(), xStates.end(), 0);
    -      71              :                 //Update new states of the feature/node
    -      72         1324 :                 states[pFeatures[index]] = xStates;
    -      73         1324 :             }
    -      74          212 :             const torch::Tensor weights = torch::full({ pDataset.size(1) }, 1.0 / pDataset.size(1), torch::kDouble);
    -      75          212 :             model.fit(pDataset, weights, pFeatures, pClassName, states);
    -      76          212 :         }
    -      77          424 :         return states;
    -      78       960128 :     }
    -      79          232 :     map<std::string, std::vector<int>> Proposal::fit_local_discretization(const torch::Tensor& y)
    -      80              :     {
    -      81              :         // Discretize the continuous input data and build pDataset (Classifier::dataset)
    -      82          232 :         int m = Xf.size(1);
    -      83          232 :         int n = Xf.size(0);
    -      84          232 :         map<std::string, std::vector<int>> states;
    -      85          232 :         pDataset = torch::zeros({ n + 1, m }, torch::kInt32);
    -      86          232 :         auto yv = std::vector<int>(y.data_ptr<int>(), y.data_ptr<int>() + y.size(0));
    -      87              :         // discretize input data by feature(row)
    -      88         1944 :         for (auto i = 0; i < pFeatures.size(); ++i) {
    -      89         1712 :             auto* discretizer = new mdlp::CPPFImdlp();
    -      90         3424 :             auto Xt_ptr = Xf.index({ i }).data_ptr<float>();
    -      91         1712 :             auto Xt = std::vector<float>(Xt_ptr, Xt_ptr + Xf.size(1));
    -      92         1712 :             discretizer->fit(Xt, yv);
    -      93         6848 :             pDataset.index_put_({ i, "..." }, torch::tensor(discretizer->transform(Xt)));
    -      94         1712 :             auto xStates = std::vector<int>(discretizer->getCutPoints().size() + 1);
    -      95         1712 :             iota(xStates.begin(), xStates.end(), 0);
    -      96         1712 :             states[pFeatures[i]] = xStates;
    -      97         1712 :             discretizers[pFeatures[i]] = discretizer;
    -      98         1712 :         }
    -      99          232 :         int n_classes = torch::max(y).item<int>() + 1;
    -     100          232 :         auto yStates = std::vector<int>(n_classes);
    -     101          232 :         iota(yStates.begin(), yStates.end(), 0);
    -     102          232 :         states[pClassName] = yStates;
    -     103          696 :         pDataset.index_put_({ n, "..." }, y);
    -     104          464 :         return states;
    -     105         3888 :     }
    -     106          168 :     torch::Tensor Proposal::prepareX(torch::Tensor& X)
    -     107              :     {
    -     108          168 :         auto Xtd = torch::zeros_like(X, torch::kInt32);
    -     109         1376 :         for (int i = 0; i < X.size(0); ++i) {
    -     110         1208 :             auto Xt = std::vector<float>(X[i].data_ptr<float>(), X[i].data_ptr<float>() + X.size(1));
    -     111         1208 :             auto Xd = discretizers[pFeatures[i]]->transform(Xt);
    -     112         3624 :             Xtd.index_put_({ i }, torch::tensor(Xd, torch::kInt32));
    -     113         1208 :         }
    -     114          336 :         return Xtd;
    -     115         1376 :     }
    -     116              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/Proposal.cc.gcov.overview.html b/html/bayesnet/classifiers/Proposal.cc.gcov.overview.html deleted file mode 100644 index 143a658..0000000 --- a/html/bayesnet/classifiers/Proposal.cc.gcov.overview.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/Proposal.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/Proposal.cc.gcov.png b/html/bayesnet/classifiers/Proposal.cc.gcov.png deleted file mode 100644 index fdaf4ea45e424d2f52bbf0722514da9881adc31c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmV+%1LOROP)NTI|IM( zvACv#=VRaW_hP%Z#s$+02}jSGg_L=XnGT6v`$1!*tnnlL@0E6$h6j-mdAXMhKHEzk zbJr@@I<>yr1ei~*(+F(i#`gw5M{D&lI|*q8*<)U%|8%V^gox(6jyMGii`ihR(gG_W z1e__iX()>bg4eg*hiVc~B{GU36;MajXazE11C1C57~JCc8acG;jfk2fWScU)u8%xT z@UChMrCv~KH1g38#5WzV9_9tl$6zBiK0>K&$#ro;+;tMp;?^3g?Kk8`iyInJivig) zFKl(me%q0ryP1Kb!Gg15Vy`B%fg87@u>$+VGC<-WsG`7FBWGVmZN7F0xw5+w{X4V7 z_{d?DqLX_NsrOY==o!$dwVa+o^;!#5`qWWG14V9dluFU2{iIu<)L2Y+g28D`%reDs zG@=8hTnHQ&k(&alg8L1y&E7gwL}Ouqr~*odfh@_GZsGW((|v>}f1@ z=^T*azl@Zo4chdq{4UhHb<5RLR7RY68e%c9$LtvE^cVsgjZ~UCA2jqA!+wCC&*L2I aJbwUJ2Do1V!-pXN0000 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1010
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const68
    bayesnet::SPODE::buildModel(at::Tensor const&)1016
    bayesnet::SPODE::SPODE(int)1124
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.cc.func.html b/html/bayesnet/classifiers/SPODE.cc.func.html deleted file mode 100644 index 87e8648..0000000 --- a/html/bayesnet/classifiers/SPODE.cc.func.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1010
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODE::SPODE(int)1124
    bayesnet::SPODE::buildModel(at::Tensor const&)1016
    bayesnet::SPODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const68
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.cc.gcov.frameset.html b/html/bayesnet/classifiers/SPODE.cc.gcov.frameset.html deleted file mode 100644 index 76bbdb6..0000000 --- a/html/bayesnet/classifiers/SPODE.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPODE.cc.gcov.html b/html/bayesnet/classifiers/SPODE.cc.gcov.html deleted file mode 100644 index c596c09..0000000 --- a/html/bayesnet/classifiers/SPODE.cc.gcov.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1010
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "SPODE.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10              : 
    -      11         1124 :     SPODE::SPODE(int root) : Classifier(Network()), root(root) {}
    -      12              : 
    -      13         1016 :     void SPODE::buildModel(const torch::Tensor& weights)
    -      14              :     {
    -      15              :         // 0. Add all nodes to the model
    -      16         1016 :         addNodes();
    -      17              :         // 1. Add edges from the class node to all other nodes
    -      18              :         // 2. Add edges from the root node to all other nodes
    -      19        25680 :         for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -      20        24664 :             model.addEdge(className, features[i]);
    -      21        24664 :             if (i != root) {
    -      22        23648 :                 model.addEdge(features[root], features[i]);
    -      23              :             }
    -      24              :         }
    -      25         1016 :     }
    -      26           68 :     std::vector<std::string> SPODE::graph(const std::string& name) const
    -      27              :     {
    -      28           68 :         return model.graph(name);
    -      29              :     }
    -      30              : 
    -      31              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.cc.gcov.overview.html b/html/bayesnet/classifiers/SPODE.cc.gcov.overview.html deleted file mode 100644 index b38cc57..0000000 --- a/html/bayesnet/classifiers/SPODE.cc.gcov.overview.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPODE.cc.gcov.png b/html/bayesnet/classifiers/SPODE.cc.gcov.png deleted file mode 100644 index b891cfebdadff1846452c9e6c49fe2a03de19d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIz!VDyv48zrdlth3}i0l9V|5pLQ^7pZ^ul_SI ztOAOIsdL_&mjc zt%ddpO!c?oR`lxaha4pdHZJ|@h!u*+?EU+8(kN;M;`RmBdLwj23{ULEn-xLNR=OOj^SQm2pe z+)^)`Hi`Cbu93cNzH6;(cgM`d?m_9ZAOFz*mBTYJqWjj2kF&o1$q{PZ!5_ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODE::~SPODE()1836
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.h.func.html b/html/bayesnet/classifiers/SPODE.h.func.html deleted file mode 100644 index 2a850e6..0000000 --- a/html/bayesnet/classifiers/SPODE.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODE::~SPODE()1836
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.h.gcov.frameset.html b/html/bayesnet/classifiers/SPODE.h.gcov.frameset.html deleted file mode 100644 index 5bab82c..0000000 --- a/html/bayesnet/classifiers/SPODE.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPODE.h.gcov.html b/html/bayesnet/classifiers/SPODE.h.gcov.html deleted file mode 100644 index 7cf5fc8..0000000 --- a/html/bayesnet/classifiers/SPODE.h.gcov.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef SPODE_H
    -       8              : #define SPODE_H
    -       9              : #include "Classifier.h"
    -      10              : 
    -      11              : namespace bayesnet {
    -      12              :     class SPODE : public Classifier {
    -      13              :     private:
    -      14              :         int root;
    -      15              :     protected:
    -      16              :         void buildModel(const torch::Tensor& weights) override;
    -      17              :     public:
    -      18              :         explicit SPODE(int root);
    -      19         1836 :         virtual ~SPODE() = default;
    -      20              :         std::vector<std::string> graph(const std::string& name = "SPODE") const override;
    -      21              :     };
    -      22              : }
    -      23              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODE.h.gcov.overview.html b/html/bayesnet/classifiers/SPODE.h.gcov.overview.html deleted file mode 100644 index 1142d9b..0000000 --- a/html/bayesnet/classifiers/SPODE.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODE.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPODE.h.gcov.png b/html/bayesnet/classifiers/SPODE.h.gcov.png deleted file mode 100644 index 79e3825d7216994c1d6a3a382a236b38235bb50b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIy!VDzylCF9IDTx4|5ZC|z|E~gq?fWOq)j89*t)pvaQm~EML zG-;i2z)X%3&H&Mv8KGXcLZrOA9COoN$*xWn=i^(v;yDYOpz1x5WV=>ft3ZMF8C81g i@7!2+-i9-bKR!`F=FNlTcOgLMFnGH9xvX - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %66
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODELd::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)8
    bayesnet::SPODELd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const36
    bayesnet::SPODELd::predict(at::Tensor&)136
    bayesnet::SPODELd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)168
    bayesnet::SPODELd::commonFit(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)172
    bayesnet::SPODELd::SPODELd(int)220
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.cc.func.html b/html/bayesnet/classifiers/SPODELd.cc.func.html deleted file mode 100644 index 217c3a2..0000000 --- a/html/bayesnet/classifiers/SPODELd.cc.func.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %66
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODELd::SPODELd(int)220
    bayesnet::SPODELd::commonFit(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)172
    bayesnet::SPODELd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)168
    bayesnet::SPODELd::fit(at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)8
    bayesnet::SPODELd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const36
    bayesnet::SPODELd::predict(at::Tensor&)136
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.cc.gcov.frameset.html b/html/bayesnet/classifiers/SPODELd.cc.gcov.frameset.html deleted file mode 100644 index 04b5f98..0000000 --- a/html/bayesnet/classifiers/SPODELd.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPODELd.cc.gcov.html b/html/bayesnet/classifiers/SPODELd.cc.gcov.html deleted file mode 100644 index 29421e0..0000000 --- a/html/bayesnet/classifiers/SPODELd.cc.gcov.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %66
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "SPODELd.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10          220 :     SPODELd::SPODELd(int root) : SPODE(root), Proposal(dataset, features, className) {}
    -      11          168 :     SPODELd& SPODELd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      12              :     {
    -      13          168 :         checkInput(X_, y_);
    -      14          168 :         Xf = X_;
    -      15          168 :         y = y_;
    -      16          168 :         return commonFit(features_, className_, states_);
    -      17              :     }
    -      18              : 
    -      19            8 :     SPODELd& SPODELd::fit(torch::Tensor& dataset, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      20              :     {
    -      21            8 :         if (!torch::is_floating_point(dataset)) {
    -      22            4 :             throw std::runtime_error("Dataset must be a floating point tensor");
    -      23              :         }
    -      24           16 :         Xf = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." }).clone();
    -      25           12 :         y = dataset.index({ -1, "..." }).clone().to(torch::kInt32);
    -      26            4 :         return commonFit(features_, className_, states_);
    -      27           12 :     }
    -      28              : 
    -      29          172 :     SPODELd& SPODELd::commonFit(const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      30              :     {
    -      31          172 :         features = features_;
    -      32          172 :         className = className_;
    -      33              :         // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -      34          172 :         states = fit_local_discretization(y);
    -      35              :         // We have discretized the input data
    -      36              :         // 1st we need to fit the model to build the normal SPODE structure, SPODE::fit initializes the base Bayesian network
    -      37          172 :         SPODE::fit(dataset, features, className, states);
    -      38          172 :         states = localDiscretizationProposal(states, model);
    -      39          172 :         return *this;
    -      40              :     }
    -      41          136 :     torch::Tensor SPODELd::predict(torch::Tensor& X)
    -      42              :     {
    -      43          136 :         auto Xt = prepareX(X);
    -      44          272 :         return SPODE::predict(Xt);
    -      45          136 :     }
    -      46           36 :     std::vector<std::string> SPODELd::graph(const std::string& name) const
    -      47              :     {
    -      48           36 :         return SPODE::graph(name);
    -      49              :     }
    -      50              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.cc.gcov.overview.html b/html/bayesnet/classifiers/SPODELd.cc.gcov.overview.html deleted file mode 100644 index 431ffcf..0000000 --- a/html/bayesnet/classifiers/SPODELd.cc.gcov.overview.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPODELd.cc.gcov.png b/html/bayesnet/classifiers/SPODELd.cc.gcov.png deleted file mode 100644 index a623770a0ec0c241e0123d9b4bfd40cc91eecc1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!VDxWnH|pqDTx4|5ZC|z|E~gq# z;ruYZ;d<$6$0~*YPLWQMTmtW|IXv@_DD!gIQ+DR!0vB$1wq=uZ4VBjIcyle3*DOo7 zAo$F--p3W!8N{r67OS4IswzLeK2LrYri^V=a8jSu{!HC0pE$UvUe_HIB{K|k~d&=`{Rt)k33@}0yP?MvLCn; zR`X@$+9mq6mmaSy{CPq+FZu1>JSmTrpBl3&uIa7iX;>{G_Mj|{P4e95_dQ2AgP!Cc vSa$B&0cS(gGB=s&r`Zkv+dTgB{>m->n~guqXMUIg3U&rhS3j3^P6 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODELd::~SPODELd()320
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.h.func.html b/html/bayesnet/classifiers/SPODELd.h.func.html deleted file mode 100644 index ae57f22..0000000 --- a/html/bayesnet/classifiers/SPODELd.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPODELd::~SPODELd()320
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.h.gcov.frameset.html b/html/bayesnet/classifiers/SPODELd.h.gcov.frameset.html deleted file mode 100644 index 2dfdfd0..0000000 --- a/html/bayesnet/classifiers/SPODELd.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPODELd.h.gcov.html b/html/bayesnet/classifiers/SPODELd.h.gcov.html deleted file mode 100644 index fd1f83a..0000000 --- a/html/bayesnet/classifiers/SPODELd.h.gcov.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef SPODELD_H
    -       8              : #define SPODELD_H
    -       9              : #include "SPODE.h"
    -      10              : #include "Proposal.h"
    -      11              : 
    -      12              : namespace bayesnet {
    -      13              :     class SPODELd : public SPODE, public Proposal {
    -      14              :     public:
    -      15              :         explicit SPODELd(int root);
    -      16          320 :         virtual ~SPODELd() = default;
    -      17              :         SPODELd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -      18              :         SPODELd& fit(torch::Tensor& dataset, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -      19              :         SPODELd& commonFit(const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states);
    -      20              :         std::vector<std::string> graph(const std::string& name = "SPODE") const override;
    -      21              :         torch::Tensor predict(torch::Tensor& X) override;
    -      22              :         static inline std::string version() { return "0.0.1"; };
    -      23              :     };
    -      24              : }
    -      25              : #endif // !SPODELD_H
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPODELd.h.gcov.overview.html b/html/bayesnet/classifiers/SPODELd.h.gcov.overview.html deleted file mode 100644 index b271338..0000000 --- a/html/bayesnet/classifiers/SPODELd.h.gcov.overview.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPODELd.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPODELd.h.gcov.png b/html/bayesnet/classifiers/SPODELd.h.gcov.png deleted file mode 100644 index 569995f9f0999faa06fe3fcb6cc293f3a72c9dfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIt!VDxsGPYO&DTx4|5ZC|z|E~gqM z_YU^(oqVhPQ^|vtT%SLEYZoX6#R-JJV6;+N^+a)2*M>i=AAJ`~ud4p{j6Z4GOSN^` zRtwLj6$PxHxX@>f$HCx}?3Lf!Gv;k^?>M2zsko#--mz0?$%6|YxZdojz7=&~ZDfc1 zk$3kd_1w7ga!ry$rMs((ue|irysc3uZ^cy~eVMpD-RHuh51eLKR78n diff --git a/html/bayesnet/classifiers/SPnDE.cc.func-c.html b/html/bayesnet/classifiers/SPnDE.cc.func-c.html deleted file mode 100644 index 79a9fb1..0000000 --- a/html/bayesnet/classifiers/SPnDE.cc.func-c.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1414
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPnDE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const24
    bayesnet::SPnDE::SPnDE(std::vector<int, std::allocator<int> >)456
    bayesnet::SPnDE::buildModel(at::Tensor const&)456
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.cc.func.html b/html/bayesnet/classifiers/SPnDE.cc.func.html deleted file mode 100644 index 3e2fd7a..0000000 --- a/html/bayesnet/classifiers/SPnDE.cc.func.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1414
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPnDE::SPnDE(std::vector<int, std::allocator<int> >)456
    bayesnet::SPnDE::buildModel(at::Tensor const&)456
    bayesnet::SPnDE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const24
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.cc.gcov.frameset.html b/html/bayesnet/classifiers/SPnDE.cc.gcov.frameset.html deleted file mode 100644 index f62ea4c..0000000 --- a/html/bayesnet/classifiers/SPnDE.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPnDE.cc.gcov.html b/html/bayesnet/classifiers/SPnDE.cc.gcov.html deleted file mode 100644 index 958f687..0000000 --- a/html/bayesnet/classifiers/SPnDE.cc.gcov.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1414
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "SPnDE.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10              : 
    -      11          456 :     SPnDE::SPnDE(std::vector<int> parents) : Classifier(Network()), parents(parents) {}
    -      12              : 
    -      13          456 :     void SPnDE::buildModel(const torch::Tensor& weights)
    -      14              :     {
    -      15              :         // 0. Add all nodes to the model
    -      16          456 :         addNodes();
    -      17          456 :         std::vector<int> attributes;
    -      18         4440 :         for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -      19         3984 :             if (std::find(parents.begin(), parents.end(), i) == parents.end()) {
    -      20         3072 :                 attributes.push_back(i);
    -      21              :             }
    -      22              :         }
    -      23              :         // 1. Add edges from the class node to all other nodes
    -      24              :         // 2. Add edges from the parents nodes to all other nodes
    -      25         3528 :         for (const auto& attribute : attributes) {
    -      26         3072 :             model.addEdge(className, features[attribute]);
    -      27         9216 :             for (const auto& root : parents) {
    -      28              : 
    -      29         6144 :                 model.addEdge(features[root], features[attribute]);
    -      30              :             }
    -      31              :         }
    -      32          456 :     }
    -      33           24 :     std::vector<std::string> SPnDE::graph(const std::string& name) const
    -      34              :     {
    -      35           24 :         return model.graph(name);
    -      36              :     }
    -      37              : 
    -      38              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.cc.gcov.overview.html b/html/bayesnet/classifiers/SPnDE.cc.gcov.overview.html deleted file mode 100644 index 9aebe7f..0000000 --- a/html/bayesnet/classifiers/SPnDE.cc.gcov.overview.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPnDE.cc.gcov.png b/html/bayesnet/classifiers/SPnDE.cc.gcov.png deleted file mode 100644 index de6281b1dbccad73dd982215dc8fe792ab040f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$A!VDxAx-dEcDTx4|5ZC|z|E~gqQr>H(N^-`2d%9+*vLS*r`{EpSeyB5mzS%-JY zxc->>=<^aj5AFudB~v=>HY8ov|Gp-<<3(`FbHz*7m47!n&7HBb% - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPnDE::~SPnDE()912
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.h.func.html b/html/bayesnet/classifiers/SPnDE.h.func.html deleted file mode 100644 index d504556..0000000 --- a/html/bayesnet/classifiers/SPnDE.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::SPnDE::~SPnDE()912
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.h.gcov.frameset.html b/html/bayesnet/classifiers/SPnDE.h.gcov.frameset.html deleted file mode 100644 index 9d7e330..0000000 --- a/html/bayesnet/classifiers/SPnDE.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/SPnDE.h.gcov.html b/html/bayesnet/classifiers/SPnDE.h.gcov.html deleted file mode 100644 index 1574cb0..0000000 --- a/html/bayesnet/classifiers/SPnDE.h.gcov.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - SPnDE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef SPnDE_H
    -       8              : #define SPnDE_H
    -       9              : #include <vector>
    -      10              : #include "Classifier.h"
    -      11              : 
    -      12              : namespace bayesnet {
    -      13              :     class SPnDE : public Classifier {
    -      14              :     public:
    -      15              :         explicit SPnDE(std::vector<int> parents);
    -      16          912 :         virtual ~SPnDE() = default;
    -      17              :         std::vector<std::string> graph(const std::string& name = "SPnDE") const override;
    -      18              :     protected:
    -      19              :         void buildModel(const torch::Tensor& weights) override;
    -      20              :     private:
    -      21              :         std::vector<int> parents;
    -      22              : 
    -      23              : 
    -      24              :     };
    -      25              : }
    -      26              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/SPnDE.h.gcov.overview.html b/html/bayesnet/classifiers/SPnDE.h.gcov.overview.html deleted file mode 100644 index 6940831..0000000 --- a/html/bayesnet/classifiers/SPnDE.h.gcov.overview.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/SPnDE.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/SPnDE.h.gcov.png b/html/bayesnet/classifiers/SPnDE.h.gcov.png deleted file mode 100644 index 36d64f460ffe72a39885ee0fae94a7941c50a6b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIp!VDxY{W&%TNJ#|vgt-3y|9=$_EPo#x`|3Xf z!z!RSm^$aZc`1<1S>O>_%)r2R1cVukg?d%pxF;B9$kf%Kc#zv_^FpUfPuK#zGN;ZX|IQ;C?Y21^;>je+( tdBFDdX!Iughs&!~xQoqZb>98NCO2QM<>>7ro - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TAN::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const8
    bayesnet::TAN::buildModel(at::Tensor const&)52
    bayesnet::TAN::TAN()188
    auto bayesnet::TAN::buildModel(at::Tensor const&)::{lambda(auto:1 const&, auto:2 const&)#1}::operator()<std::pair<int, float>, std::pair<int, float> >(std::pair<int, float> const&, std::pair<int, float> const&) const648
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.cc.func.html b/html/bayesnet/classifiers/TAN.cc.func.html deleted file mode 100644 index 487522b..0000000 --- a/html/bayesnet/classifiers/TAN.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    auto bayesnet::TAN::buildModel(at::Tensor const&)::{lambda(auto:1 const&, auto:2 const&)#1}::operator()<std::pair<int, float>, std::pair<int, float> >(std::pair<int, float> const&, std::pair<int, float> const&) const648
    bayesnet::TAN::TAN()188
    bayesnet::TAN::buildModel(at::Tensor const&)52
    bayesnet::TAN::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const8
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.cc.gcov.frameset.html b/html/bayesnet/classifiers/TAN.cc.gcov.frameset.html deleted file mode 100644 index 1c81b16..0000000 --- a/html/bayesnet/classifiers/TAN.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/TAN.cc.gcov.html b/html/bayesnet/classifiers/TAN.cc.gcov.html deleted file mode 100644 index 12c5c28..0000000 --- a/html/bayesnet/classifiers/TAN.cc.gcov.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "TAN.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10          188 :     TAN::TAN() : Classifier(Network()) {}
    -      11              : 
    -      12           52 :     void TAN::buildModel(const torch::Tensor& weights)
    -      13              :     {
    -      14              :         // 0. Add all nodes to the model
    -      15           52 :         addNodes();
    -      16              :         // 1. Compute mutual information between each feature and the class and set the root node
    -      17              :         // as the highest mutual information with the class
    -      18           52 :         auto mi = std::vector <std::pair<int, float >>();
    -      19          156 :         torch::Tensor class_dataset = dataset.index({ -1, "..." });
    -      20          356 :         for (int i = 0; i < static_cast<int>(features.size()); ++i) {
    -      21          912 :             torch::Tensor feature_dataset = dataset.index({ i, "..." });
    -      22          304 :             auto mi_value = metrics.mutualInformation(class_dataset, feature_dataset, weights);
    -      23          304 :             mi.push_back({ i, mi_value });
    -      24          304 :         }
    -      25          700 :         sort(mi.begin(), mi.end(), [](const auto& left, const auto& right) {return left.second < right.second;});
    -      26           52 :         auto root = mi[mi.size() - 1].first;
    -      27              :         // 2. Compute mutual information between each feature and the class
    -      28           52 :         auto weights_matrix = metrics.conditionalEdge(weights);
    -      29              :         // 3. Compute the maximum spanning tree
    -      30           52 :         auto mst = metrics.maximumSpanningTree(features, weights_matrix, root);
    -      31              :         // 4. Add edges from the maximum spanning tree to the model
    -      32          304 :         for (auto i = 0; i < mst.size(); ++i) {
    -      33          252 :             auto [from, to] = mst[i];
    -      34          252 :             model.addEdge(features[from], features[to]);
    -      35              :         }
    -      36              :         // 5. Add edges from the class to all features
    -      37          356 :         for (auto feature : features) {
    -      38          304 :             model.addEdge(className, feature);
    -      39          304 :         }
    -      40          408 :     }
    -      41            8 :     std::vector<std::string> TAN::graph(const std::string& title) const
    -      42              :     {
    -      43            8 :         return model.graph(title);
    -      44              :     }
    -      45              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.cc.gcov.overview.html b/html/bayesnet/classifiers/TAN.cc.gcov.overview.html deleted file mode 100644 index eb915d6..0000000 --- a/html/bayesnet/classifiers/TAN.cc.gcov.overview.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/TAN.cc.gcov.png b/html/bayesnet/classifiers/TAN.cc.gcov.png deleted file mode 100644 index e18de49282c42a322662b8c4b0c04c8817aef83f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$F!VDx&H-BsdQW60^A+G=b|6c_J%iqVwzWUF= zunH&+rp|e9UJ7J$7I;J!GcfQS0b$0e+I-Rs42(LSE{-71#*1hMP7rZOLce{$zg;+k1PVRGfXq z>4>!+{0Bbo(O_67*6>`$y+F(@bxY13MO|eBFA;+c~0dzZN}uaM{o?v_b0-1v82Yp$4u+Ji9ev!N$i^%utU2;FhY)ckGB z9eG8<{P)=zx%+~ew%k>CvHcrw^3ylUAIp1R*DJ`&KjOW$_~-{oHDF*ec)I$ztaD0e F0sucprsDtr diff --git a/html/bayesnet/classifiers/TAN.h.func-c.html b/html/bayesnet/classifiers/TAN.h.func-c.html deleted file mode 100644 index 5e95716..0000000 --- a/html/bayesnet/classifiers/TAN.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TAN::~TAN()76
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.h.func.html b/html/bayesnet/classifiers/TAN.h.func.html deleted file mode 100644 index 002e588..0000000 --- a/html/bayesnet/classifiers/TAN.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TAN::~TAN()76
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.h.gcov.frameset.html b/html/bayesnet/classifiers/TAN.h.gcov.frameset.html deleted file mode 100644 index 0974d93..0000000 --- a/html/bayesnet/classifiers/TAN.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/TAN.h.gcov.html b/html/bayesnet/classifiers/TAN.h.gcov.html deleted file mode 100644 index 10dc513..0000000 --- a/html/bayesnet/classifiers/TAN.h.gcov.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TAN.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef TAN_H
    -       8              : #define TAN_H
    -       9              : #include "Classifier.h"
    -      10              : namespace bayesnet {
    -      11              :     class TAN : public Classifier {
    -      12              :     private:
    -      13              :     protected:
    -      14              :         void buildModel(const torch::Tensor& weights) override;
    -      15              :     public:
    -      16              :         TAN();
    -      17           76 :         virtual ~TAN() = default;
    -      18              :         std::vector<std::string> graph(const std::string& name = "TAN") const override;
    -      19              :     };
    -      20              : }
    -      21              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TAN.h.gcov.overview.html b/html/bayesnet/classifiers/TAN.h.gcov.overview.html deleted file mode 100644 index 0060cc0..0000000 --- a/html/bayesnet/classifiers/TAN.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TAN.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/TAN.h.gcov.png b/html/bayesnet/classifiers/TAN.h.gcov.png deleted file mode 100644 index 5165005c82bb464b0dd52e40c83106f73c98781d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIu!VDypSCu#dDTx4|5ZC|z|E~gq(_e}__xs@=Rw zXWt^$#Rht8k+we`Ogr(?{!IBBrqI3Iq3W(qnyQ!mR?0q-Y}W7yJ~L;|?X2G1&yl4! bS_HJJCrh7s)O|(*=ne)?S3j3^P6 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TANLd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::TANLd::predict(at::Tensor&)16
    bayesnet::TANLd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::TANLd::TANLd()68
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.cc.func.html b/html/bayesnet/classifiers/TANLd.cc.func.html deleted file mode 100644 index d202a54..0000000 --- a/html/bayesnet/classifiers/TANLd.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TANLd::TANLd()68
    bayesnet::TANLd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::TANLd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::TANLd::predict(at::Tensor&)16
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.cc.gcov.frameset.html b/html/bayesnet/classifiers/TANLd.cc.gcov.frameset.html deleted file mode 100644 index f5abeeb..0000000 --- a/html/bayesnet/classifiers/TANLd.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/TANLd.cc.gcov.html b/html/bayesnet/classifiers/TANLd.cc.gcov.html deleted file mode 100644 index d4a6403..0000000 --- a/html/bayesnet/classifiers/TANLd.cc.gcov.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1717
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "TANLd.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10           68 :     TANLd::TANLd() : TAN(), Proposal(dataset, features, className) {}
    -      11           20 :     TANLd& TANLd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      12              :     {
    -      13           20 :         checkInput(X_, y_);
    -      14           20 :         features = features_;
    -      15           20 :         className = className_;
    -      16           20 :         Xf = X_;
    -      17           20 :         y = y_;
    -      18              :         // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -      19           20 :         states = fit_local_discretization(y);
    -      20              :         // We have discretized the input data
    -      21              :         // 1st we need to fit the model to build the normal TAN structure, TAN::fit initializes the base Bayesian network
    -      22           20 :         TAN::fit(dataset, features, className, states);
    -      23           20 :         states = localDiscretizationProposal(states, model);
    -      24           20 :         return *this;
    -      25              : 
    -      26              :     }
    -      27           16 :     torch::Tensor TANLd::predict(torch::Tensor& X)
    -      28              :     {
    -      29           16 :         auto Xt = prepareX(X);
    -      30           32 :         return TAN::predict(Xt);
    -      31           16 :     }
    -      32            4 :     std::vector<std::string> TANLd::graph(const std::string& name) const
    -      33              :     {
    -      34            4 :         return TAN::graph(name);
    -      35              :     }
    -      36              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.cc.gcov.overview.html b/html/bayesnet/classifiers/TANLd.cc.gcov.overview.html deleted file mode 100644 index 3904a1e..0000000 --- a/html/bayesnet/classifiers/TANLd.cc.gcov.overview.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/TANLd.cc.gcov.png b/html/bayesnet/classifiers/TANLd.cc.gcov.png deleted file mode 100644 index 72788e6b4b5ac2d82fb4fcd40963a5962b545616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$6!VDze^epfMQW60^A+G=b|6c_J%iqVwzWUF= zunH&+rp|e9UJ7J$7I;J!GcfQS0b$0e+I-SL!F!%Ajv*GkYlAy^k0|gcOCR7$Y2NTZ zkJr?t;YXF#cGm`(=WDq|z7?>_PTWutTf6rI^F{Mx!6jYy-tZrZ?YX`|#xDAu$o-%T zjS|UBGlC~=I?kp(Z3d&#a<-WMNh`00b#AaY`1I%!Gc&g**YD5Dba6EBR_o9z7hSwc z)>x}+tJ9)KOzopr03u+I9{>OV diff --git a/html/bayesnet/classifiers/TANLd.h.func-c.html b/html/bayesnet/classifiers/TANLd.h.func-c.html deleted file mode 100644 index e388977..0000000 --- a/html/bayesnet/classifiers/TANLd.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TANLd::~TANLd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.h.func.html b/html/bayesnet/classifiers/TANLd.h.func.html deleted file mode 100644 index cd88f69..0000000 --- a/html/bayesnet/classifiers/TANLd.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::TANLd::~TANLd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.h.gcov.frameset.html b/html/bayesnet/classifiers/TANLd.h.gcov.frameset.html deleted file mode 100644 index e27ea9f..0000000 --- a/html/bayesnet/classifiers/TANLd.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/classifiers/TANLd.h.gcov.html b/html/bayesnet/classifiers/TANLd.h.gcov.html deleted file mode 100644 index 06ed158..0000000 --- a/html/bayesnet/classifiers/TANLd.h.gcov.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiers - TANLd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef TANLD_H
    -       8              : #define TANLD_H
    -       9              : #include "TAN.h"
    -      10              : #include "Proposal.h"
    -      11              : 
    -      12              : namespace bayesnet {
    -      13              :     class TANLd : public TAN, public Proposal {
    -      14              :     private:
    -      15              :     public:
    -      16              :         TANLd();
    -      17           20 :         virtual ~TANLd() = default;
    -      18              :         TANLd& fit(torch::Tensor& X, torch::Tensor& y, const std::vector<std::string>& features, const std::string& className, map<std::string, std::vector<int>>& states) override;
    -      19              :         std::vector<std::string> graph(const std::string& name = "TAN") const override;
    -      20              :         torch::Tensor predict(torch::Tensor& X) override;
    -      21              :         static inline std::string version() { return "0.0.1"; };
    -      22              :     };
    -      23              : }
    -      24              : #endif // !TANLD_H
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/TANLd.h.gcov.overview.html b/html/bayesnet/classifiers/TANLd.h.gcov.overview.html deleted file mode 100644 index dfc5d32..0000000 --- a/html/bayesnet/classifiers/TANLd.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers/TANLd.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/classifiers/TANLd.h.gcov.png b/html/bayesnet/classifiers/TANLd.h.gcov.png deleted file mode 100644 index dd5b3fea99a09e8b2f36ce40bf7a089524d46984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIl!VDzmo21VNaRPioT>t<7zX}MJzmJW5^`C)Z z6;K>Zo%7zj6v*Z*@Q5sCVBk9f!i-b3`J{n@lRRA - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/index-detail-sort-l.html b/html/bayesnet/classifiers/index-detail-sort-l.html deleted file mode 100644 index e3933a6..0000000 --- a/html/bayesnet/classifiers/index-detail-sort-l.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/index-detail.html b/html/bayesnet/classifiers/index-detail.html deleted file mode 100644 index e516b23..0000000 --- a/html/bayesnet/classifiers/index-detail.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/index-sort-f.html b/html/bayesnet/classifiers/index-sort-f.html deleted file mode 100644 index 3bd48a5..0000000 --- a/html/bayesnet/classifiers/index-sort-f.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/index-sort-l.html b/html/bayesnet/classifiers/index-sort-l.html deleted file mode 100644 index e3933a6..0000000 --- a/html/bayesnet/classifiers/index-sort-l.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/classifiers/index.html b/html/bayesnet/classifiers/index.html deleted file mode 100644 index e516b23..0000000 --- a/html/bayesnet/classifiers/index.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/classifiers - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/classifiersCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %384380
    Test Date:2024-05-06 17:54:04Functions:100.0 %7272
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Classifier.cc -
    100.0%
    -
    100.0 %126126100.0 %2424
    Classifier.h -
    100.0%
    -
    100.0 %44100.0 %44
    KDB.cc -
    96.3%96.3%
    -
    96.3 %5452100.0 %55
    KDB.h -
    100.0%
    -
    100.0 %11100.0 %11
    KDBLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    KDBLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    Proposal.cc -
    97.7%97.7%
    -
    97.7 %8684100.0 %88
    SPODE.cc -
    100.0%
    -
    100.0 %1010100.0 %33
    SPODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPODELd.cc -
    100.0%
    -
    100.0 %2626100.0 %66
    SPODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    SPnDE.cc -
    100.0%
    -
    100.0 %1414100.0 %33
    SPnDE.h -
    100.0%
    -
    100.0 %11100.0 %11
    TAN.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    TAN.h -
    100.0%
    -
    100.0 %11100.0 %11
    TANLd.cc -
    100.0%
    -
    100.0 %1717100.0 %44
    TANLd.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.cc.func-c.html b/html/bayesnet/ensembles/A2DE.cc.func-c.html deleted file mode 100644 index 306cddd..0000000 --- a/html/bayesnet/ensembles/A2DE.cc.func-c.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::A2DE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::A2DE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)8
    bayesnet::A2DE::A2DE(bool)12
    bayesnet::A2DE::buildModel(at::Tensor const&)16
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.cc.func.html b/html/bayesnet/ensembles/A2DE.cc.func.html deleted file mode 100644 index 50e0946..0000000 --- a/html/bayesnet/ensembles/A2DE.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::A2DE::A2DE(bool)12
    bayesnet::A2DE::buildModel(at::Tensor const&)16
    bayesnet::A2DE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::A2DE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)8
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.cc.gcov.frameset.html b/html/bayesnet/ensembles/A2DE.cc.gcov.frameset.html deleted file mode 100644 index a5f7f37..0000000 --- a/html/bayesnet/ensembles/A2DE.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/A2DE.cc.gcov.html b/html/bayesnet/ensembles/A2DE.cc.gcov.html deleted file mode 100644 index 197b670..0000000 --- a/html/bayesnet/ensembles/A2DE.cc.gcov.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2323
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "A2DE.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10           12 :     A2DE::A2DE(bool predict_voting) : Ensemble(predict_voting)
    -      11              :     {
    -      12           24 :         validHyperparameters = { "predict_voting" };
    -      13           36 :     }
    -      14            8 :     void A2DE::setHyperparameters(const nlohmann::json& hyperparameters_)
    -      15              :     {
    -      16            8 :         auto hyperparameters = hyperparameters_;
    -      17            8 :         if (hyperparameters.contains("predict_voting")) {
    -      18            8 :             predict_voting = hyperparameters["predict_voting"];
    -      19            8 :             hyperparameters.erase("predict_voting");
    -      20              :         }
    -      21            8 :         Classifier::setHyperparameters(hyperparameters);
    -      22            8 :     }
    -      23           16 :     void A2DE::buildModel(const torch::Tensor& weights)
    -      24              :     {
    -      25           16 :         models.clear();
    -      26           16 :         significanceModels.clear();
    -      27          124 :         for (int i = 0; i < features.size() - 1; ++i) {
    -      28          564 :             for (int j = i + 1; j < features.size(); ++j) {
    -      29          456 :                 auto model = std::make_unique<SPnDE>(std::vector<int>({ i, j }));
    -      30          456 :                 models.push_back(std::move(model));
    -      31          456 :             }
    -      32              :         }
    -      33           16 :         n_models = static_cast<unsigned>(models.size());
    -      34           16 :         significanceModels = std::vector<double>(n_models, 1.0);
    -      35           16 :     }
    -      36            4 :     std::vector<std::string> A2DE::graph(const std::string& title) const
    -      37              :     {
    -      38            4 :         return Ensemble::graph(title);
    -      39              :     }
    -      40              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.cc.gcov.overview.html b/html/bayesnet/ensembles/A2DE.cc.gcov.overview.html deleted file mode 100644 index 0606f56..0000000 --- a/html/bayesnet/ensembles/A2DE.cc.gcov.overview.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/A2DE.cc.gcov.png b/html/bayesnet/ensembles/A2DE.cc.gcov.png deleted file mode 100644 index e1917a4fab902d6595ec091a22ae01d083d4d9fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$5!VDy5`z06wDTx4|5ZC|z|E~gqR9kJ*i*&)mK$T<1N^ zyTwse`HP=r?BVD0uJbNeYu0&kWh3vcNJHU0O%ZH7fjs&z+8?%sha8f9l@ZJ(JAXr& z(tPfMZ>LTb-d*&0`?gEQ2U9Lyc(8e4fLKxU*{>BEDMiKwmkYnM|6&p-Ju-Lmo}=wR P-!XW)`njxgN@xNARrZ9j diff --git a/html/bayesnet/ensembles/A2DE.h.func-c.html b/html/bayesnet/ensembles/A2DE.h.func-c.html deleted file mode 100644 index eeddf23..0000000 --- a/html/bayesnet/ensembles/A2DE.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::A2DE::~A2DE()12
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.h.func.html b/html/bayesnet/ensembles/A2DE.h.func.html deleted file mode 100644 index 471300f..0000000 --- a/html/bayesnet/ensembles/A2DE.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::A2DE::~A2DE()12
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.h.gcov.frameset.html b/html/bayesnet/ensembles/A2DE.h.gcov.frameset.html deleted file mode 100644 index 7054d6e..0000000 --- a/html/bayesnet/ensembles/A2DE.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/A2DE.h.gcov.html b/html/bayesnet/ensembles/A2DE.h.gcov.html deleted file mode 100644 index f87081b..0000000 --- a/html/bayesnet/ensembles/A2DE.h.gcov.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - A2DE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef A2DE_H
    -       8              : #define A2DE_H
    -       9              : #include "bayesnet/classifiers/SPnDE.h"
    -      10              : #include "Ensemble.h"
    -      11              : namespace bayesnet {
    -      12              :     class A2DE : public Ensemble {
    -      13              :     public:
    -      14              :         A2DE(bool predict_voting = false);
    -      15           12 :         virtual ~A2DE() {};
    -      16              :         void setHyperparameters(const nlohmann::json& hyperparameters) override;
    -      17              :         std::vector<std::string> graph(const std::string& title = "A2DE") const override;
    -      18              :     protected:
    -      19              :         void buildModel(const torch::Tensor& weights) override;
    -      20              :     };
    -      21              : }
    -      22              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/A2DE.h.gcov.overview.html b/html/bayesnet/ensembles/A2DE.h.gcov.overview.html deleted file mode 100644 index 4ebfd35..0000000 --- a/html/bayesnet/ensembles/A2DE.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/A2DE.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/A2DE.h.gcov.png b/html/bayesnet/ensembles/A2DE.h.gcov.png deleted file mode 100644 index 335f3bc0d96657c35e9cb0c00b3eff576713a3d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIq!VDyr+OfR{QW60^A+G=b|6c_J%iqVwzWUF= zunH&+rp|e9UJ7J$7I;J!GcfQS0b$0e+I-SL!4^*!#}JK)Qzy0a9#G(6`N(#jD}{N_ z|GbSaEJU8WPJB>s_}pas)1tl#PgyrDl5=R3kkdDfbg8aq^f#Q9%K6@W#o-wBD+g;2 z@%kK9Z7yc)eD~+>>+5^ZFPm=4p_JB_d2B-{qx`$Btn<^)e!Y^pHNnX1^unZTDX;D) lY~cRO?UsE_$SS)=Kjg3c@*Q0J!+`E#@O1TaS?83{1OOYtUP%A| diff --git a/html/bayesnet/ensembles/AODE.cc.func-c.html b/html/bayesnet/ensembles/AODE.cc.func-c.html deleted file mode 100644 index ed8871d..0000000 --- a/html/bayesnet/ensembles/AODE.cc.func-c.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2020
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::AODE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)4
    bayesnet::AODE::buildModel(at::Tensor const&)24
    bayesnet::AODE::AODE(bool)76
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.cc.func.html b/html/bayesnet/ensembles/AODE.cc.func.html deleted file mode 100644 index 073fd53..0000000 --- a/html/bayesnet/ensembles/AODE.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2020
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODE::AODE(bool)76
    bayesnet::AODE::buildModel(at::Tensor const&)24
    bayesnet::AODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::AODE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)4
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.cc.gcov.frameset.html b/html/bayesnet/ensembles/AODE.cc.gcov.frameset.html deleted file mode 100644 index 3c1d4a3..0000000 --- a/html/bayesnet/ensembles/AODE.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/AODE.cc.gcov.html b/html/bayesnet/ensembles/AODE.cc.gcov.html deleted file mode 100644 index a07c4e0..0000000 --- a/html/bayesnet/ensembles/AODE.cc.gcov.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2020
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "AODE.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10           76 :     AODE::AODE(bool predict_voting) : Ensemble(predict_voting)
    -      11              :     {
    -      12          152 :         validHyperparameters = { "predict_voting" };
    -      13              : 
    -      14          228 :     }
    -      15            4 :     void AODE::setHyperparameters(const nlohmann::json& hyperparameters_)
    -      16              :     {
    -      17            4 :         auto hyperparameters = hyperparameters_;
    -      18            4 :         if (hyperparameters.contains("predict_voting")) {
    -      19            4 :             predict_voting = hyperparameters["predict_voting"];
    -      20            4 :             hyperparameters.erase("predict_voting");
    -      21              :         }
    -      22            4 :         Classifier::setHyperparameters(hyperparameters);
    -      23            4 :     }
    -      24           24 :     void AODE::buildModel(const torch::Tensor& weights)
    -      25              :     {
    -      26           24 :         models.clear();
    -      27           24 :         significanceModels.clear();
    -      28          188 :         for (int i = 0; i < features.size(); ++i) {
    -      29          164 :             models.push_back(std::make_unique<SPODE>(i));
    -      30              :         }
    -      31           24 :         n_models = models.size();
    -      32           24 :         significanceModels = std::vector<double>(n_models, 1.0);
    -      33           24 :     }
    -      34            4 :     std::vector<std::string> AODE::graph(const std::string& title) const
    -      35              :     {
    -      36            4 :         return Ensemble::graph(title);
    -      37              :     }
    -      38              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.cc.gcov.overview.html b/html/bayesnet/ensembles/AODE.cc.gcov.overview.html deleted file mode 100644 index d7e43cc..0000000 --- a/html/bayesnet/ensembles/AODE.cc.gcov.overview.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/AODE.cc.gcov.png b/html/bayesnet/ensembles/AODE.cc.gcov.png deleted file mode 100644 index 682ccab2a66cd7a5a31f4c362faecaa3be4c04a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$A!VDxAx-dEcDTx4|5ZC|z|E~gqGjn;>j-4uk;PsTJ3JS(VXMI zQHHNb#FT9}0w>?hjx(P#yJxfD`bRfB=FjBaE4VUGsrRXyrI>|TOxJJebIJEqJ&mh0 v3w(~7ODY=1XRO$zZfu|DZlV=cUoOAu; - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODE::~AODE()28
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.h.func.html b/html/bayesnet/ensembles/AODE.h.func.html deleted file mode 100644 index f9dcc65..0000000 --- a/html/bayesnet/ensembles/AODE.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODE::~AODE()28
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.h.gcov.frameset.html b/html/bayesnet/ensembles/AODE.h.gcov.frameset.html deleted file mode 100644 index b3184e8..0000000 --- a/html/bayesnet/ensembles/AODE.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/AODE.h.gcov.html b/html/bayesnet/ensembles/AODE.h.gcov.html deleted file mode 100644 index 505e06d..0000000 --- a/html/bayesnet/ensembles/AODE.h.gcov.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef AODE_H
    -       8              : #define AODE_H
    -       9              : #include "bayesnet/classifiers/SPODE.h"
    -      10              : #include "Ensemble.h"
    -      11              : namespace bayesnet {
    -      12              :     class AODE : public Ensemble {
    -      13              :     public:
    -      14              :         AODE(bool predict_voting = false);
    -      15           28 :         virtual ~AODE() {};
    -      16              :         void setHyperparameters(const nlohmann::json& hyperparameters) override;
    -      17              :         std::vector<std::string> graph(const std::string& title = "AODE") const override;
    -      18              :     protected:
    -      19              :         void buildModel(const torch::Tensor& weights) override;
    -      20              :     };
    -      21              : }
    -      22              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODE.h.gcov.overview.html b/html/bayesnet/ensembles/AODE.h.gcov.overview.html deleted file mode 100644 index 44ca0dd..0000000 --- a/html/bayesnet/ensembles/AODE.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODE.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/AODE.h.gcov.png b/html/bayesnet/ensembles/AODE.h.gcov.png deleted file mode 100644 index 335f3bc0d96657c35e9cb0c00b3eff576713a3d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIq!VDyr+OfR{QW60^A+G=b|6c_J%iqVwzWUF= zunH&+rp|e9UJ7J$7I;J!GcfQS0b$0e+I-SL!4^*!#}JK)Qzy0a9#G(6`N(#jD}{N_ z|GbSaEJU8WPJB>s_}pas)1tl#PgyrDl5=R3kkdDfbg8aq^f#Q9%K6@W#o-wBD+g;2 z@%kK9Z7yc)eD~+>>+5^ZFPm=4p_JB_d2B-{qx`$Btn<^)e!Y^pHNnX1^unZTDX;D) lY~cRO?UsE_$SS)=Kjg3c@*Q0J!+`E#@O1TaS?83{1OOYtUP%A| diff --git a/html/bayesnet/ensembles/AODELd.cc.func-c.html b/html/bayesnet/ensembles/AODELd.cc.func-c.html deleted file mode 100644 index 9649bd0..0000000 --- a/html/bayesnet/ensembles/AODELd.cc.func-c.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2424
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODELd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::AODELd::buildModel(at::Tensor const&)20
    bayesnet::AODELd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::AODELd::trainModel(at::Tensor const&)20
    bayesnet::AODELd::AODELd(bool)68
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.cc.func.html b/html/bayesnet/ensembles/AODELd.cc.func.html deleted file mode 100644 index 1480bb3..0000000 --- a/html/bayesnet/ensembles/AODELd.cc.func.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2424
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODELd::AODELd(bool)68
    bayesnet::AODELd::buildModel(at::Tensor const&)20
    bayesnet::AODELd::fit(at::Tensor&, at::Tensor&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > >&)20
    bayesnet::AODELd::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::AODELd::trainModel(at::Tensor const&)20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.cc.gcov.frameset.html b/html/bayesnet/ensembles/AODELd.cc.gcov.frameset.html deleted file mode 100644 index 6ad9c56..0000000 --- a/html/bayesnet/ensembles/AODELd.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/AODELd.cc.gcov.html b/html/bayesnet/ensembles/AODELd.cc.gcov.html deleted file mode 100644 index ec90eb3..0000000 --- a/html/bayesnet/ensembles/AODELd.cc.gcov.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2424
    Test Date:2024-05-06 17:54:04Functions:100.0 %55
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "AODELd.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10           68 :     AODELd::AODELd(bool predict_voting) : Ensemble(predict_voting), Proposal(dataset, features, className)
    -      11              :     {
    -      12           68 :     }
    -      13           20 :     AODELd& AODELd::fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_)
    -      14              :     {
    -      15           20 :         checkInput(X_, y_);
    -      16           20 :         features = features_;
    -      17           20 :         className = className_;
    -      18           20 :         Xf = X_;
    -      19           20 :         y = y_;
    -      20              :         // Fills std::vectors Xv & yv with the data from tensors X_ (discretized) & y
    -      21           20 :         states = fit_local_discretization(y);
    -      22              :         // We have discretized the input data
    -      23              :         // 1st we need to fit the model to build the normal TAN structure, TAN::fit initializes the base Bayesian network
    -      24           20 :         Ensemble::fit(dataset, features, className, states);
    -      25           20 :         return *this;
    -      26              : 
    -      27              :     }
    -      28           20 :     void AODELd::buildModel(const torch::Tensor& weights)
    -      29              :     {
    -      30           20 :         models.clear();
    -      31          168 :         for (int i = 0; i < features.size(); ++i) {
    -      32          148 :             models.push_back(std::make_unique<SPODELd>(i));
    -      33              :         }
    -      34           20 :         n_models = models.size();
    -      35           20 :         significanceModels = std::vector<double>(n_models, 1.0);
    -      36           20 :     }
    -      37           20 :     void AODELd::trainModel(const torch::Tensor& weights)
    -      38              :     {
    -      39          168 :         for (const auto& model : models) {
    -      40          148 :             model->fit(Xf, y, features, className, states);
    -      41              :         }
    -      42           20 :     }
    -      43            4 :     std::vector<std::string> AODELd::graph(const std::string& name) const
    -      44              :     {
    -      45            4 :         return Ensemble::graph(name);
    -      46              :     }
    -      47              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.cc.gcov.overview.html b/html/bayesnet/ensembles/AODELd.cc.gcov.overview.html deleted file mode 100644 index 4a5392b..0000000 --- a/html/bayesnet/ensembles/AODELd.cc.gcov.overview.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/AODELd.cc.gcov.png b/html/bayesnet/ensembles/AODELd.cc.gcov.png deleted file mode 100644 index 820461b51d180a7ebdb0acbd2bb4e8974bae5b5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$J!VDzayaT#`lth3}i0l9V|5pLQ^7pZ^ul_SI ztOAOIsdL_&mjc0@5}EJR zZ(p!r(bxZRp4qd%>^Us_=5f#LSy_P*up%DRWcdNqWGWPD`ecuzy?}%4%K--}nr|CKR@5b=-TnXga59mdyR4gIR}X z8uA)$53~Ab7XM@OCfBDsZt6HjL^o?i&OH-4(>L9~;D>K@_^vLU<9r*6iZ)D+u~oNR zwo1Zx)%Fc57e1KCB=_a3JdgV_hLb{W2Z~q{0`s@{*VtH|edQN$|A)z8=VMol=X&ip eRrvk=Q)W}!hczr>PkDer#^CAd=d#Wzp$PzE(VT+- diff --git a/html/bayesnet/ensembles/AODELd.h.func-c.html b/html/bayesnet/ensembles/AODELd.h.func-c.html deleted file mode 100644 index 1efbbbd..0000000 --- a/html/bayesnet/ensembles/AODELd.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODELd::~AODELd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.h.func.html b/html/bayesnet/ensembles/AODELd.h.func.html deleted file mode 100644 index ac31416..0000000 --- a/html/bayesnet/ensembles/AODELd.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::AODELd::~AODELd()20
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.h.gcov.frameset.html b/html/bayesnet/ensembles/AODELd.h.gcov.frameset.html deleted file mode 100644 index 05a17d3..0000000 --- a/html/bayesnet/ensembles/AODELd.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/AODELd.h.gcov.html b/html/bayesnet/ensembles/AODELd.h.gcov.html deleted file mode 100644 index eddb474..0000000 --- a/html/bayesnet/ensembles/AODELd.h.gcov.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - AODELd.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef AODELD_H
    -       8              : #define AODELD_H
    -       9              : #include "bayesnet/classifiers/Proposal.h"
    -      10              : #include "bayesnet/classifiers/SPODELd.h"
    -      11              : #include "Ensemble.h"
    -      12              : 
    -      13              : namespace bayesnet {
    -      14              :     class AODELd : public Ensemble, public Proposal {
    -      15              :     public:
    -      16              :         AODELd(bool predict_voting = true);
    -      17           20 :         virtual ~AODELd() = default;
    -      18              :         AODELd& fit(torch::Tensor& X_, torch::Tensor& y_, const std::vector<std::string>& features_, const std::string& className_, map<std::string, std::vector<int>>& states_) override;
    -      19              :         std::vector<std::string> graph(const std::string& name = "AODELd") const override;
    -      20              :     protected:
    -      21              :         void trainModel(const torch::Tensor& weights) override;
    -      22              :         void buildModel(const torch::Tensor& weights) override;
    -      23              :     };
    -      24              : }
    -      25              : #endif // !AODELD_H
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/AODELd.h.gcov.overview.html b/html/bayesnet/ensembles/AODELd.h.gcov.overview.html deleted file mode 100644 index 2494af7..0000000 --- a/html/bayesnet/ensembles/AODELd.h.gcov.overview.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/AODELd.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/AODELd.h.gcov.png b/html/bayesnet/ensembles/AODELd.h.gcov.png deleted file mode 100644 index afba66b475d0f1cc70adadfe0748e5da9e975c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIt!VDxsGPYO&DTx4|5ZC|z|E~gqp4A73i}<5*i=1p73UHm0cDFu_Kt@eR;*OI^^?Egd7$pMzuG%)U1@rB z)%wRjqx45BBZ3xis;puU*qgAiC}DkW>(fh2PZl|G*e#i`SlF~NGW^e`8n10N`L^%$ z_U9N*s+YVR*Vf*#Q14oyrekXKSFI&>O|xCiRcckFe17K(0-eX;>FVdQ&MBb@01gIa Ag#Z8m diff --git a/html/bayesnet/ensembles/BoostAODE.cc.func-c.html b/html/bayesnet/ensembles/BoostAODE.cc.func-c.html deleted file mode 100644 index b1c0a6e..0000000 --- a/html/bayesnet/ensembles/BoostAODE.cc.func-c.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.3 %237233
    Test Date:2024-05-06 17:54:04Functions:100.0 %99
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::BoostAODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::BoostAODE::update_weights_block(int, at::Tensor&, at::Tensor&)28
    bayesnet::BoostAODE::initializeModels()32
    bayesnet::BoostAODE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)88
    bayesnet::BoostAODE::buildModel(at::Tensor const&)92
    bayesnet::BoostAODE::trainModel(at::Tensor const&)92
    bayesnet::BoostAODE::BoostAODE(bool)168
    bayesnet::update_weights(at::Tensor&, at::Tensor&, at::Tensor&)544
    auto bayesnet::BoostAODE::trainModel(at::Tensor const&)::{lambda(auto:1)#1}::operator()<int>(int) const9700
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.cc.func.html b/html/bayesnet/ensembles/BoostAODE.cc.func.html deleted file mode 100644 index 3684782..0000000 --- a/html/bayesnet/ensembles/BoostAODE.cc.func.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.3 %237233
    Test Date:2024-05-06 17:54:04Functions:100.0 %99
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    auto bayesnet::BoostAODE::trainModel(at::Tensor const&)::{lambda(auto:1)#1}::operator()<int>(int) const9700
    bayesnet::BoostAODE::BoostAODE(bool)168
    bayesnet::BoostAODE::buildModel(at::Tensor const&)92
    bayesnet::BoostAODE::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const4
    bayesnet::BoostAODE::initializeModels()32
    bayesnet::BoostAODE::setHyperparameters(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)88
    bayesnet::BoostAODE::trainModel(at::Tensor const&)92
    bayesnet::BoostAODE::update_weights_block(int, at::Tensor&, at::Tensor&)28
    bayesnet::update_weights(at::Tensor&, at::Tensor&, at::Tensor&)544
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.cc.gcov.frameset.html b/html/bayesnet/ensembles/BoostAODE.cc.gcov.frameset.html deleted file mode 100644 index e7b9ea6..0000000 --- a/html/bayesnet/ensembles/BoostAODE.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/BoostAODE.cc.gcov.html b/html/bayesnet/ensembles/BoostAODE.cc.gcov.html deleted file mode 100644 index bfbb152..0000000 --- a/html/bayesnet/ensembles/BoostAODE.cc.gcov.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.3 %237233
    Test Date:2024-05-06 17:54:04Functions:100.0 %99
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <set>
    -       8              : #include <functional>
    -       9              : #include <limits.h>
    -      10              : #include <tuple>
    -      11              : #include <folding.hpp>
    -      12              : #include "bayesnet/feature_selection/CFS.h"
    -      13              : #include "bayesnet/feature_selection/FCBF.h"
    -      14              : #include "bayesnet/feature_selection/IWSS.h"
    -      15              : #include "BoostAODE.h"
    -      16              : #include "lib/log/loguru.cpp"
    -      17              : 
    -      18              : namespace bayesnet {
    -      19              : 
    -      20          168 :     BoostAODE::BoostAODE(bool predict_voting) : Ensemble(predict_voting)
    -      21              :     {
    -      22         1848 :         validHyperparameters = {
    -      23              :             "maxModels", "bisection", "order", "convergence", "convergence_best", "threshold",
    -      24              :             "select_features", "maxTolerance", "predict_voting", "block_update"
    -      25         1848 :         };
    -      26              : 
    -      27          504 :     }
    -      28           92 :     void BoostAODE::buildModel(const torch::Tensor& weights)
    -      29              :     {
    -      30              :         // Models shall be built in trainModel
    -      31           92 :         models.clear();
    -      32           92 :         significanceModels.clear();
    -      33           92 :         n_models = 0;
    -      34              :         // Prepare the validation dataset
    -      35          276 :         auto y_ = dataset.index({ -1, "..." });
    -      36           92 :         if (convergence) {
    -      37              :             // Prepare train & validation sets from train data
    -      38           76 :             auto fold = folding::StratifiedKFold(5, y_, 271);
    -      39           76 :             auto [train, test] = fold.getFold(0);
    -      40           76 :             auto train_t = torch::tensor(train);
    -      41           76 :             auto test_t = torch::tensor(test);
    -      42              :             // Get train and validation sets
    -      43          380 :             X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), train_t });
    -      44          228 :             y_train = dataset.index({ -1, train_t });
    -      45          380 :             X_test = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), test_t });
    -      46          228 :             y_test = dataset.index({ -1, test_t });
    -      47           76 :             dataset = X_train;
    -      48           76 :             m = X_train.size(1);
    -      49           76 :             auto n_classes = states.at(className).size();
    -      50              :             // Build dataset with train data
    -      51           76 :             buildDataset(y_train);
    -      52           76 :             metrics = Metrics(dataset, features, className, n_classes);
    -      53           76 :         } else {
    -      54              :             // Use all data to train
    -      55           64 :             X_train = dataset.index({ torch::indexing::Slice(0, dataset.size(0) - 1), "..." });
    -      56           16 :             y_train = y_;
    -      57              :         }
    -      58          900 :     }
    -      59           88 :     void BoostAODE::setHyperparameters(const nlohmann::json& hyperparameters_)
    -      60              :     {
    -      61           88 :         auto hyperparameters = hyperparameters_;
    -      62           88 :         if (hyperparameters.contains("order")) {
    -      63          100 :             std::vector<std::string> algos = { Orders.ASC, Orders.DESC, Orders.RAND };
    -      64           20 :             order_algorithm = hyperparameters["order"];
    -      65           20 :             if (std::find(algos.begin(), algos.end(), order_algorithm) == algos.end()) {
    -      66            4 :                 throw std::invalid_argument("Invalid order algorithm, valid values [" + Orders.ASC + ", " + Orders.DESC + ", " + Orders.RAND + "]");
    -      67              :             }
    -      68           16 :             hyperparameters.erase("order");
    -      69           20 :         }
    -      70           84 :         if (hyperparameters.contains("convergence")) {
    -      71           36 :             convergence = hyperparameters["convergence"];
    -      72           36 :             hyperparameters.erase("convergence");
    -      73              :         }
    -      74           84 :         if (hyperparameters.contains("convergence_best")) {
    -      75           12 :             convergence_best = hyperparameters["convergence_best"];
    -      76           12 :             hyperparameters.erase("convergence_best");
    -      77              :         }
    -      78           84 :         if (hyperparameters.contains("bisection")) {
    -      79           32 :             bisection = hyperparameters["bisection"];
    -      80           32 :             hyperparameters.erase("bisection");
    -      81              :         }
    -      82           84 :         if (hyperparameters.contains("threshold")) {
    -      83           24 :             threshold = hyperparameters["threshold"];
    -      84           24 :             hyperparameters.erase("threshold");
    -      85              :         }
    -      86           84 :         if (hyperparameters.contains("maxTolerance")) {
    -      87           44 :             maxTolerance = hyperparameters["maxTolerance"];
    -      88           44 :             if (maxTolerance < 1 || maxTolerance > 4)
    -      89           12 :                 throw std::invalid_argument("Invalid maxTolerance value, must be greater in [1, 4]");
    -      90           32 :             hyperparameters.erase("maxTolerance");
    -      91              :         }
    -      92           72 :         if (hyperparameters.contains("predict_voting")) {
    -      93            4 :             predict_voting = hyperparameters["predict_voting"];
    -      94            4 :             hyperparameters.erase("predict_voting");
    -      95              :         }
    -      96           72 :         if (hyperparameters.contains("select_features")) {
    -      97           36 :             auto selectedAlgorithm = hyperparameters["select_features"];
    -      98          180 :             std::vector<std::string> algos = { SelectFeatures.IWSS, SelectFeatures.CFS, SelectFeatures.FCBF };
    -      99           36 :             selectFeatures = true;
    -     100           36 :             select_features_algorithm = selectedAlgorithm;
    -     101           36 :             if (std::find(algos.begin(), algos.end(), selectedAlgorithm) == algos.end()) {
    -     102            4 :                 throw std::invalid_argument("Invalid selectFeatures value, valid values [" + SelectFeatures.IWSS + ", " + SelectFeatures.CFS + ", " + SelectFeatures.FCBF + "]");
    -     103              :             }
    -     104           32 :             hyperparameters.erase("select_features");
    -     105           40 :         }
    -     106           68 :         if (hyperparameters.contains("block_update")) {
    -     107            8 :             block_update = hyperparameters["block_update"];
    -     108            8 :             hyperparameters.erase("block_update");
    -     109              :         }
    -     110           68 :         Classifier::setHyperparameters(hyperparameters);
    -     111          144 :     }
    -     112          544 :     std::tuple<torch::Tensor&, double, bool> update_weights(torch::Tensor& ytrain, torch::Tensor& ypred, torch::Tensor& weights)
    -     113              :     {
    -     114          544 :         bool terminate = false;
    -     115          544 :         double alpha_t = 0;
    -     116          544 :         auto mask_wrong = ypred != ytrain;
    -     117          544 :         auto mask_right = ypred == ytrain;
    -     118          544 :         auto masked_weights = weights * mask_wrong.to(weights.dtype());
    -     119          544 :         double epsilon_t = masked_weights.sum().item<double>();
    -     120          544 :         if (epsilon_t > 0.5) {
    -     121              :             // Inverse the weights policy (plot ln(wt))
    -     122              :             // "In each round of AdaBoost, there is a sanity check to ensure that the current base 
    -     123              :             // learner is better than random guess" (Zhi-Hua Zhou, 2012)
    -     124           16 :             terminate = true;
    -     125              :         } else {
    -     126          528 :             double wt = (1 - epsilon_t) / epsilon_t;
    -     127          528 :             alpha_t = epsilon_t == 0 ? 1 : 0.5 * log(wt);
    -     128              :             // Step 3.2: Update weights for next classifier
    -     129              :             // Step 3.2.1: Update weights of wrong samples
    -     130          528 :             weights += mask_wrong.to(weights.dtype()) * exp(alpha_t) * weights;
    -     131              :             // Step 3.2.2: Update weights of right samples
    -     132          528 :             weights += mask_right.to(weights.dtype()) * exp(-alpha_t) * weights;
    -     133              :             // Step 3.3: Normalise the weights
    -     134          528 :             double totalWeights = torch::sum(weights).item<double>();
    -     135          528 :             weights = weights / totalWeights;
    -     136              :         }
    -     137         1088 :         return { weights, alpha_t, terminate };
    -     138          544 :     }
    -     139           28 :     std::tuple<torch::Tensor&, double, bool> BoostAODE::update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights)
    -     140              :     {
    -     141              :         /* Update Block algorithm
    -     142              :             k = # of models in block
    -     143              :             n_models = # of models in ensemble to make predictions
    -     144              :             n_models_bak = # models saved
    -     145              :             models = vector of models to make predictions
    -     146              :             models_bak = models not used to make predictions
    -     147              :             significances_bak = backup of significances vector
    -     148              : 
    -     149              :             Case list
    -     150              :             A) k = 1, n_models = 1              => n = 0 , n_models = n + k
    -     151              :             B) k = 1, n_models = n + 1  => n_models = n + k
    -     152              :             C) k > 1, n_models = k + 1       => n= 1, n_models = n + k
    -     153              :             D) k > 1, n_models = k           => n = 0, n_models = n + k
    -     154              :             E) k > 1, n_models = k + n       => n_models = n + k
    -     155              : 
    -     156              :             A, D) n=0, k > 0, n_models == k
    -     157              :             1. n_models_bak <- n_models
    -     158              :             2. significances_bak <- significances
    -     159              :             3. significances = vector(k, 1)
    -     160              :             4. Don’t move any classifiers out of models
    -     161              :             5. n_models <- k
    -     162              :             6. Make prediction, compute alpha, update weights
    -     163              :             7. Don’t restore any classifiers to models
    -     164              :             8. significances <- significances_bak
    -     165              :             9. Update last k significances
    -     166              :             10. n_models <- n_models_bak
    -     167              : 
    -     168              :             B, C, E) n > 0, k > 0, n_models == n + k
    -     169              :             1. n_models_bak <- n_models
    -     170              :             2. significances_bak <- significances
    -     171              :             3. significances = vector(k, 1)
    -     172              :             4. Move first n classifiers to models_bak
    -     173              :             5. n_models <- k
    -     174              :             6. Make prediction, compute alpha, update weights
    -     175              :             7. Insert classifiers in models_bak to be the first n models
    -     176              :             8. significances <- significances_bak
    -     177              :             9. Update last k significances
    -     178              :             10. n_models <- n_models_bak
    -     179              :         */
    -     180              :         //
    -     181              :         // Make predict with only the last k models
    -     182              :         //
    -     183           28 :         std::unique_ptr<Classifier> model;
    -     184           28 :         std::vector<std::unique_ptr<Classifier>> models_bak;
    -     185              :         // 1. n_models_bak <- n_models 2. significances_bak <- significances
    -     186           28 :         auto significance_bak = significanceModels;
    -     187           28 :         auto n_models_bak = n_models;
    -     188              :         // 3. significances = vector(k, 1)
    -     189           28 :         significanceModels = std::vector<double>(k, 1.0);
    -     190              :         // 4. Move first n classifiers to models_bak
    -     191              :         // backup the first n_models - k models (if n_models == k, don't backup any)
    -     192          148 :         for (int i = 0; i < n_models - k; ++i) {
    -     193          120 :             model = std::move(models[0]);
    -     194          120 :             models.erase(models.begin());
    -     195          120 :             models_bak.push_back(std::move(model));
    -     196              :         }
    -     197           28 :         assert(models.size() == k);
    -     198              :         // 5. n_models <- k
    -     199           28 :         n_models = k;
    -     200              :         // 6. Make prediction, compute alpha, update weights
    -     201           28 :         auto ypred = predict(X_train);
    -     202              :         //
    -     203              :         // Update weights
    -     204              :         //
    -     205              :         double alpha_t;
    -     206              :         bool terminate;
    -     207           28 :         std::tie(weights, alpha_t, terminate) = update_weights(y_train, ypred, weights);
    -     208              :         //
    -     209              :         // Restore the models if needed
    -     210              :         //
    -     211              :         // 7. Insert classifiers in models_bak to be the first n models
    -     212              :         // if n_models_bak == k, don't restore any, because none of them were moved
    -     213           28 :         if (k != n_models_bak) {
    -     214              :             // Insert in the same order as they were extracted
    -     215           24 :             int bak_size = models_bak.size();
    -     216          144 :             for (int i = 0; i < bak_size; ++i) {
    -     217          120 :                 model = std::move(models_bak[bak_size - 1 - i]);
    -     218          120 :                 models_bak.erase(models_bak.end() - 1);
    -     219          120 :                 models.insert(models.begin(), std::move(model));
    -     220              :             }
    -     221              :         }
    -     222              :         // 8. significances <- significances_bak
    -     223           28 :         significanceModels = significance_bak;
    -     224              :         //
    -     225              :         // Update the significance of the last k models
    -     226              :         //
    -     227              :         // 9. Update last k significances
    -     228          104 :         for (int i = 0; i < k; ++i) {
    -     229           76 :             significanceModels[n_models_bak - k + i] = alpha_t;
    -     230              :         }
    -     231              :         // 10. n_models <- n_models_bak
    -     232           28 :         n_models = n_models_bak;
    -     233           56 :         return { weights, alpha_t, terminate };
    -     234           28 :     }
    -     235           32 :     std::vector<int> BoostAODE::initializeModels()
    -     236              :     {
    -     237           32 :         std::vector<int> featuresUsed;
    -     238           32 :         torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -     239           32 :         int maxFeatures = 0;
    -     240           32 :         if (select_features_algorithm == SelectFeatures.CFS) {
    -     241            8 :             featureSelector = new CFS(dataset, features, className, maxFeatures, states.at(className).size(), weights_);
    -     242           24 :         } else if (select_features_algorithm == SelectFeatures.IWSS) {
    -     243           12 :             if (threshold < 0 || threshold >0.5) {
    -     244            8 :                 throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.IWSS + " [0, 0.5]");
    -     245              :             }
    -     246            4 :             featureSelector = new IWSS(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold);
    -     247           12 :         } else if (select_features_algorithm == SelectFeatures.FCBF) {
    -     248           12 :             if (threshold < 1e-7 || threshold > 1) {
    -     249            8 :                 throw std::invalid_argument("Invalid threshold value for " + SelectFeatures.FCBF + " [1e-7, 1]");
    -     250              :             }
    -     251            4 :             featureSelector = new FCBF(dataset, features, className, maxFeatures, states.at(className).size(), weights_, threshold);
    -     252              :         }
    -     253           16 :         featureSelector->fit();
    -     254           16 :         auto cfsFeatures = featureSelector->getFeatures();
    -     255           16 :         auto scores = featureSelector->getScores();
    -     256          100 :         for (const int& feature : cfsFeatures) {
    -     257           84 :             featuresUsed.push_back(feature);
    -     258           84 :             std::unique_ptr<Classifier> model = std::make_unique<SPODE>(feature);
    -     259           84 :             model->fit(dataset, features, className, states, weights_);
    -     260           84 :             models.push_back(std::move(model));
    -     261           84 :             significanceModels.push_back(1.0); // They will be updated later in trainModel
    -     262           84 :             n_models++;
    -     263           84 :         }
    -     264           16 :         notes.push_back("Used features in initialization: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size()) + " with " + select_features_algorithm);
    -     265           16 :         delete featureSelector;
    -     266           32 :         return featuresUsed;
    -     267           48 :     }
    -     268           92 :     void BoostAODE::trainModel(const torch::Tensor& weights)
    -     269              :     {
    -     270              :         //
    -     271              :         // Logging setup
    -     272              :         //
    -     273           92 :         loguru::set_thread_name("BoostAODE");
    -     274           92 :         loguru::g_stderr_verbosity = loguru::Verbosity_OFF;
    -     275           92 :         loguru::add_file("boostAODE.log", loguru::Truncate, loguru::Verbosity_MAX);
    -     276              : 
    -     277              :         // Algorithm based on the adaboost algorithm for classification
    -     278              :         // as explained in Ensemble methods (Zhi-Hua Zhou, 2012)
    -     279           92 :         fitted = true;
    -     280           92 :         double alpha_t = 0;
    -     281           92 :         torch::Tensor weights_ = torch::full({ m }, 1.0 / m, torch::kFloat64);
    -     282           92 :         bool finished = false;
    -     283           92 :         std::vector<int> featuresUsed;
    -     284           92 :         if (selectFeatures) {
    -     285           32 :             featuresUsed = initializeModels();
    -     286           16 :             auto ypred = predict(X_train);
    -     287           16 :             std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -     288              :             // Update significance of the models
    -     289          100 :             for (int i = 0; i < n_models; ++i) {
    -     290           84 :                 significanceModels[i] = alpha_t;
    -     291              :             }
    -     292           16 :             if (finished) {
    -     293            0 :                 return;
    -     294              :             }
    -     295           16 :         }
    -     296           76 :         int numItemsPack = 0; // The counter of the models inserted in the current pack
    -     297              :         // Variables to control the accuracy finish condition
    -     298           76 :         double priorAccuracy = 0.0;
    -     299           76 :         double improvement = 1.0;
    -     300           76 :         double convergence_threshold = 1e-4;
    -     301           76 :         int tolerance = 0; // number of times the accuracy is lower than the convergence_threshold
    -     302              :         // Step 0: Set the finish condition
    -     303              :         // epsilon sub t > 0.5 => inverse the weights policy
    -     304              :         // validation error is not decreasing
    -     305              :         // run out of features
    -     306           76 :         bool ascending = order_algorithm == Orders.ASC;
    -     307           76 :         std::mt19937 g{ 173 };
    -     308          504 :         while (!finished) {
    -     309              :             // Step 1: Build ranking with mutual information
    -     310          428 :             auto featureSelection = metrics.SelectKBestWeighted(weights_, ascending, n); // Get all the features sorted
    -     311          428 :             if (order_algorithm == Orders.RAND) {
    -     312           36 :                 std::shuffle(featureSelection.begin(), featureSelection.end(), g);
    -     313              :             }
    -     314              :             // Remove used features
    -     315          856 :             featureSelection.erase(remove_if(begin(featureSelection), end(featureSelection), [&](auto x)
    -     316        38800 :                 { return std::find(begin(featuresUsed), end(featuresUsed), x) != end(featuresUsed);}),
    -     317          428 :                 end(featureSelection)
    -     318              :             );
    -     319          428 :             int k = bisection ? pow(2, tolerance) : 1;
    -     320          428 :             int counter = 0; // The model counter of the current pack
    -     321          428 :             VLOG_SCOPE_F(1, "counter=%d k=%d featureSelection.size: %zu", counter, k, featureSelection.size());
    -     322         1004 :             while (counter++ < k && featureSelection.size() > 0) {
    -     323          576 :                 auto feature = featureSelection[0];
    -     324          576 :                 featureSelection.erase(featureSelection.begin());
    -     325          576 :                 std::unique_ptr<Classifier> model;
    -     326          576 :                 model = std::make_unique<SPODE>(feature);
    -     327          576 :                 model->fit(dataset, features, className, states, weights_);
    -     328          576 :                 alpha_t = 0.0;
    -     329          576 :                 if (!block_update) {
    -     330          500 :                     auto ypred = model->predict(X_train);
    -     331              :                     // Step 3.1: Compute the classifier amout of say
    -     332          500 :                     std::tie(weights_, alpha_t, finished) = update_weights(y_train, ypred, weights_);
    -     333          500 :                 }
    -     334              :                 // Step 3.4: Store classifier and its accuracy to weigh its future vote
    -     335          576 :                 numItemsPack++;
    -     336          576 :                 featuresUsed.push_back(feature);
    -     337          576 :                 models.push_back(std::move(model));
    -     338          576 :                 significanceModels.push_back(alpha_t);
    -     339          576 :                 n_models++;
    -     340          576 :                 VLOG_SCOPE_F(2, "numItemsPack: %d n_models: %d featuresUsed: %zu", numItemsPack, n_models, featuresUsed.size());
    -     341          576 :             }
    -     342          428 :             if (block_update) {
    -     343           28 :                 std::tie(weights_, alpha_t, finished) = update_weights_block(k, y_train, weights_);
    -     344              :             }
    -     345          428 :             if (convergence && !finished) {
    -     346          296 :                 auto y_val_predict = predict(X_test);
    -     347          296 :                 double accuracy = (y_val_predict == y_test).sum().item<double>() / (double)y_test.size(0);
    -     348          296 :                 if (priorAccuracy == 0) {
    -     349           60 :                     priorAccuracy = accuracy;
    -     350              :                 } else {
    -     351          236 :                     improvement = accuracy - priorAccuracy;
    -     352              :                 }
    -     353          296 :                 if (improvement < convergence_threshold) {
    -     354          176 :                     VLOG_SCOPE_F(3, "  (improvement<threshold) tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -     355          176 :                     tolerance++;
    -     356          176 :                 } else {
    -     357          120 :                     VLOG_SCOPE_F(3, "* (improvement>=threshold) Reset. tolerance: %d numItemsPack: %d improvement: %f prior: %f current: %f", tolerance, numItemsPack, improvement, priorAccuracy, accuracy);
    -     358          120 :                     tolerance = 0; // Reset the counter if the model performs better
    -     359          120 :                     numItemsPack = 0;
    -     360          120 :                 }
    -     361          296 :                 if (convergence_best) {
    -     362              :                     // Keep the best accuracy until now as the prior accuracy
    -     363           32 :                     priorAccuracy = std::max(accuracy, priorAccuracy);
    -     364              :                 } else {
    -     365              :                     // Keep the last accuray obtained as the prior accuracy
    -     366          264 :                     priorAccuracy = accuracy;
    -     367              :                 }
    -     368          296 :             }
    -     369          428 :             VLOG_SCOPE_F(1, "tolerance: %d featuresUsed.size: %zu features.size: %zu", tolerance, featuresUsed.size(), features.size());
    -     370          428 :             finished = finished || tolerance > maxTolerance || featuresUsed.size() == features.size();
    -     371          428 :         }
    -     372           76 :         if (tolerance > maxTolerance) {
    -     373            8 :             if (numItemsPack < n_models) {
    -     374            8 :                 notes.push_back("Convergence threshold reached & " + std::to_string(numItemsPack) + " models eliminated");
    -     375            8 :                 VLOG_SCOPE_F(4, "Convergence threshold reached & %d models eliminated of %d", numItemsPack, n_models);
    -     376          104 :                 for (int i = 0; i < numItemsPack; ++i) {
    -     377           96 :                     significanceModels.pop_back();
    -     378           96 :                     models.pop_back();
    -     379           96 :                     n_models--;
    -     380              :                 }
    -     381            8 :             } else {
    -     382            0 :                 notes.push_back("Convergence threshold reached & 0 models eliminated");
    -     383            0 :                 VLOG_SCOPE_F(4, "Convergence threshold reached & 0 models eliminated n_models=%d numItemsPack=%d", n_models, numItemsPack);
    -     384            0 :             }
    -     385              :         }
    -     386           76 :         if (featuresUsed.size() != features.size()) {
    -     387            4 :             notes.push_back("Used features in train: " + std::to_string(featuresUsed.size()) + " of " + std::to_string(features.size()));
    -     388            4 :             status = WARNING;
    -     389              :         }
    -     390           76 :         notes.push_back("Number of models: " + std::to_string(n_models));
    -     391          108 :     }
    -     392            4 :     std::vector<std::string> BoostAODE::graph(const std::string& title) const
    -     393              :     {
    -     394            4 :         return Ensemble::graph(title);
    -     395              :     }
    -     396              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.cc.gcov.overview.html b/html/bayesnet/ensembles/BoostAODE.cc.gcov.overview.html deleted file mode 100644 index 41fb2fd..0000000 --- a/html/bayesnet/ensembles/BoostAODE.cc.gcov.overview.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/BoostAODE.cc.gcov.png b/html/bayesnet/ensembles/BoostAODE.cc.gcov.png deleted file mode 100644 index 9690752107f1df8fbab54deb054c92b13f841980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 zcmV-W2(R~vP)DhwWXfLjX*9gpUDu{SQd(3)BKKl7>PO$Tr=R@d9$*fijt!($|{N6FSk4 zCJ>I%<{e0y2sfr5O<*=QQL`Skkic%439t#1G6U%sWxQl@S?BQ)n8Xa45z@XB4@yFrZUcPJ?gJl%=W$K2eg)IOV*=< zgAELX{GL;oHBj6P#zAysWTCmJQ~!)wM>49KrthTzjAD2R;!~$+Uh&l!UP+C>-#s(q zvRJRn=qv@ik$kA_$cHvV-I@Ez$7LP&DO9Fb00D7M5z1YkM;kr{Hs`i)V=iNG6AJHv zFoTsfS2H&lRUcODTWyymY@MAoY{D<)ZwJy(4Uq7OR`E90Xq{NbJ9&7mN;9cHSY7Ag z7x)TMG-%Bf$ z#!}|r-s@#ASO?N{vYoHZK3QuN+wIEkaqIpMGW&XMY9LkL&_55JkPJ;gmQq-~W|?`| z*Ro`diQH5fo;HJ#?G=iBR*=p7vF%LV5sddc2EYvyzc#*t+M%c-mR5z|(d4<7J9g1~ zvkY_%{-E5;ZfBbBOon+WwLF!=yp=nj(!j7M?IacdipT7w)&R|*x(@d$%>aeLhZG6R*AHXT<4Li`}L=-zkmOJ{s~qC zhL{RmlaSvt&9~Yt5U9j%KQX7sGz_C!T)%qRJ?z}>$(yNpg3}by*+ONmBLYoU=wTn~ z=nIvpx{W$?iYz`}jh?NZe~bcFAjKhRRJ@n}u3=>sNae)0U0q{c$j*RcMFL_r?Bc}m zGvlp~{xCFMobDb!t%o=YN6)PXDcovU?mxZ4x>)4)hHubOaTyC$*gextq7ZE_tdJ5K ze6CCbVjLq0baBHQ8ucvTY@eq6dXn442cZ_oEyPqXi&}ss_)P11%X!L2doA!b(1`Xy z)5RR`&$C<(pc0mDwEHC~z2LLT+Rc0(vIaj1QOEUQ9_hYO*|W`VpT35p z0M0OAa9nTd!y|6^GLWW-lb1oCM@M1U4&z11uFMG)Hx};00GzVEtF`Q1^=XM_-I65W z7en>CfudKdJhr3bjbqpYItw6V^t`7V8%?`zN0Ff=%onf;yY=+JW*s?h#J2-)ce(U# zQ`d{PadPgUob@9&YXvc23b#*^q=BR=Y5?Xm)Q%!e#P+ixgK!fd2sZRsYzz89c-Q0000 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::BoostAODE::~BoostAODE()88
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.h.func.html b/html/bayesnet/ensembles/BoostAODE.h.func.html deleted file mode 100644 index 0d6e3e7..0000000 --- a/html/bayesnet/ensembles/BoostAODE.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::BoostAODE::~BoostAODE()88
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.h.gcov.frameset.html b/html/bayesnet/ensembles/BoostAODE.h.gcov.frameset.html deleted file mode 100644 index bf76400..0000000 --- a/html/bayesnet/ensembles/BoostAODE.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/BoostAODE.h.gcov.html b/html/bayesnet/ensembles/BoostAODE.h.gcov.html deleted file mode 100644 index f435ab1..0000000 --- a/html/bayesnet/ensembles/BoostAODE.h.gcov.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - BoostAODE.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef BOOSTAODE_H
    -       8              : #define BOOSTAODE_H
    -       9              : #include <map>
    -      10              : #include "bayesnet/classifiers/SPODE.h"
    -      11              : #include "bayesnet/feature_selection/FeatureSelect.h"
    -      12              : #include "Ensemble.h"
    -      13              : namespace bayesnet {
    -      14              :     const struct {
    -      15              :         std::string CFS = "CFS";
    -      16              :         std::string FCBF = "FCBF";
    -      17              :         std::string IWSS = "IWSS";
    -      18              :     }SelectFeatures;
    -      19              :     const struct {
    -      20              :         std::string ASC = "asc";
    -      21              :         std::string DESC = "desc";
    -      22              :         std::string RAND = "rand";
    -      23              :     }Orders;
    -      24              :     class BoostAODE : public Ensemble {
    -      25              :     public:
    -      26              :         explicit BoostAODE(bool predict_voting = false);
    -      27           88 :         virtual ~BoostAODE() = default;
    -      28              :         std::vector<std::string> graph(const std::string& title = "BoostAODE") const override;
    -      29              :         void setHyperparameters(const nlohmann::json& hyperparameters_) override;
    -      30              :     protected:
    -      31              :         void buildModel(const torch::Tensor& weights) override;
    -      32              :         void trainModel(const torch::Tensor& weights) override;
    -      33              :     private:
    -      34              :         std::tuple<torch::Tensor&, double, bool> update_weights_block(int k, torch::Tensor& ytrain, torch::Tensor& weights);
    -      35              :         std::vector<int> initializeModels();
    -      36              :         torch::Tensor X_train, y_train, X_test, y_test;
    -      37              :         // Hyperparameters
    -      38              :         bool bisection = true; // if true, use bisection stratety to add k models at once to the ensemble
    -      39              :         int maxTolerance = 3;
    -      40              :         std::string order_algorithm; // order to process the KBest features asc, desc, rand
    -      41              :         bool convergence = true; //if true, stop when the model does not improve
    -      42              :         bool convergence_best = false; // wether to keep the best accuracy to the moment or the last accuracy as prior accuracy
    -      43              :         bool selectFeatures = false; // if true, use feature selection
    -      44              :         std::string select_features_algorithm = Orders.DESC; // Selected feature selection algorithm
    -      45              :         FeatureSelect* featureSelector = nullptr;
    -      46              :         double threshold = -1;
    -      47              :         bool block_update = false;
    -      48              :     };
    -      49              : }
    -      50              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/BoostAODE.h.gcov.overview.html b/html/bayesnet/ensembles/BoostAODE.h.gcov.overview.html deleted file mode 100644 index b0556d7..0000000 --- a/html/bayesnet/ensembles/BoostAODE.h.gcov.overview.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/BoostAODE.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/BoostAODE.h.gcov.png b/html/bayesnet/ensembles/BoostAODE.h.gcov.png deleted file mode 100644 index 193c4ce28eb56d8ea14c98ca64eb1e537f64bd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!VDxWnH|pqDTx4|5ZC|z|E~gq-c`z zZaCHAbpP|rV*iHXKMZ;*x$-=|p(5qA zhw|d;swqqbdumcs^!t{#nreNh$g1t!?I88#N?eITwmQT0Q!64Ab8Vb-R@J_cvo4hH zw#t1Jd3xum4FTI)pUe)HR|+Vc#(#8khg5F+q~8}78szdU`?`!wej3^bHOg?b0RxP|)78&qol`;+05!&;00000 diff --git a/html/bayesnet/ensembles/Ensemble.cc.func-c.html b/html/bayesnet/ensembles/Ensemble.cc.func-c.html deleted file mode 100644 index a883be2..0000000 --- a/html/bayesnet/ensembles/Ensemble.cc.func-c.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %155155
    Test Date:2024-05-06 17:54:04Functions:100.0 %2525
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Ensemble::getNumberOfStates() const4
    bayesnet::Ensemble::show[abi:cxx11]() const4
    bayesnet::Ensemble::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const16
    bayesnet::Ensemble::getNumberOfEdges() const28
    bayesnet::Ensemble::getNumberOfNodes() const28
    bayesnet::Ensemble::predict_average_voting(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)32
    bayesnet::Ensemble::trainModel(at::Tensor const&)40
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)44
    bayesnet::Ensemble::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&)52
    bayesnet::Ensemble::compute_arg_max(std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&)56
    bayesnet::Ensemble::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)68
    bayesnet::Ensemble::score(at::Tensor&, at::Tensor&)80
    bayesnet::Ensemble::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)100
    bayesnet::Ensemble::predict_average_voting(at::Tensor&)164
    bayesnet::Ensemble::voting(at::Tensor&)164
    bayesnet::Ensemble::predict_average_proba(at::Tensor&)296
    bayesnet::Ensemble::Ensemble(bool)324
    bayesnet::Ensemble::compute_arg_max(at::Tensor&)424
    bayesnet::Ensemble::predict(at::Tensor&)436
    bayesnet::Ensemble::predict_proba(at::Tensor&)452
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda()#1}::operator()() const532
    bayesnet::Ensemble::predict_average_voting(at::Tensor&)::{lambda()#1}::operator()() const1216
    bayesnet::Ensemble::predict_average_proba(at::Tensor&)::{lambda()#1}::operator()() const1468
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda(double)#1}::operator()(double) const43152
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda()#1}::operator()() const::{lambda(double, double)#1}::operator()(double, double) const629712
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.cc.func.html b/html/bayesnet/ensembles/Ensemble.cc.func.html deleted file mode 100644 index 4a8acaf..0000000 --- a/html/bayesnet/ensembles/Ensemble.cc.func.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %155155
    Test Date:2024-05-06 17:54:04Functions:100.0 %2525
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Ensemble::Ensemble(bool)324
    bayesnet::Ensemble::compute_arg_max(at::Tensor&)424
    bayesnet::Ensemble::compute_arg_max(std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&)56
    bayesnet::Ensemble::getNumberOfEdges() const28
    bayesnet::Ensemble::getNumberOfNodes() const28
    bayesnet::Ensemble::getNumberOfStates() const4
    bayesnet::Ensemble::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const16
    bayesnet::Ensemble::predict(at::Tensor&)436
    bayesnet::Ensemble::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)68
    bayesnet::Ensemble::predict_average_proba(at::Tensor&)296
    bayesnet::Ensemble::predict_average_proba(at::Tensor&)::{lambda()#1}::operator()() const1468
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)44
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda()#1}::operator()() const532
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda()#1}::operator()() const::{lambda(double, double)#1}::operator()(double, double) const629712
    bayesnet::Ensemble::predict_average_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)::{lambda(double)#1}::operator()(double) const43152
    bayesnet::Ensemble::predict_average_voting(at::Tensor&)164
    bayesnet::Ensemble::predict_average_voting(at::Tensor&)::{lambda()#1}::operator()() const1216
    bayesnet::Ensemble::predict_average_voting(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)32
    bayesnet::Ensemble::predict_proba(at::Tensor&)452
    bayesnet::Ensemble::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&)100
    bayesnet::Ensemble::score(at::Tensor&, at::Tensor&)80
    bayesnet::Ensemble::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, std::vector<int, std::allocator<int> >&)52
    bayesnet::Ensemble::show[abi:cxx11]() const4
    bayesnet::Ensemble::trainModel(at::Tensor const&)40
    bayesnet::Ensemble::voting(at::Tensor&)164
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.cc.gcov.frameset.html b/html/bayesnet/ensembles/Ensemble.cc.gcov.frameset.html deleted file mode 100644 index 0a30b16..0000000 --- a/html/bayesnet/ensembles/Ensemble.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/Ensemble.cc.gcov.html b/html/bayesnet/ensembles/Ensemble.cc.gcov.html deleted file mode 100644 index 9113988..0000000 --- a/html/bayesnet/ensembles/Ensemble.cc.gcov.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %155155
    Test Date:2024-05-06 17:54:04Functions:100.0 %2525
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "Ensemble.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10              : 
    -      11          324 :     Ensemble::Ensemble(bool predict_voting) : Classifier(Network()), n_models(0), predict_voting(predict_voting)
    -      12              :     {
    -      13              : 
    -      14          324 :     };
    -      15              :     const std::string ENSEMBLE_NOT_FITTED = "Ensemble has not been fitted";
    -      16           40 :     void Ensemble::trainModel(const torch::Tensor& weights)
    -      17              :     {
    -      18           40 :         n_models = models.size();
    -      19          660 :         for (auto i = 0; i < n_models; ++i) {
    -      20              :             // fit with std::vectors
    -      21          620 :             models[i]->fit(dataset, features, className, states);
    -      22              :         }
    -      23           40 :     }
    -      24           56 :     std::vector<int> Ensemble::compute_arg_max(std::vector<std::vector<double>>& X)
    -      25              :     {
    -      26           56 :         std::vector<int> y_pred;
    -      27        12400 :         for (auto i = 0; i < X.size(); ++i) {
    -      28        12344 :             auto max = std::max_element(X[i].begin(), X[i].end());
    -      29        24688 :             y_pred.push_back(std::distance(X[i].begin(), max));
    -      30              :         }
    -      31          112 :         return y_pred;
    -      32           56 :     }
    -      33          424 :     torch::Tensor Ensemble::compute_arg_max(torch::Tensor& X)
    -      34              :     {
    -      35          424 :         auto y_pred = torch::argmax(X, 1);
    -      36          848 :         return y_pred;
    -      37          424 :     }
    -      38          164 :     torch::Tensor Ensemble::voting(torch::Tensor& votes)
    -      39              :     {
    -      40              :         // Convert m x n_models tensor to a m x n_class_states with voting probabilities
    -      41          164 :         auto y_pred_ = votes.accessor<int, 2>();
    -      42          164 :         std::vector<int> y_pred_final;
    -      43          164 :         int numClasses = states.at(className).size();
    -      44              :         // votes is m x n_models with the prediction of every model for each sample
    -      45          164 :         auto result = torch::zeros({ votes.size(0), numClasses }, torch::kFloat32);
    -      46          164 :         auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -      47        42084 :         for (int i = 0; i < votes.size(0); ++i) {
    -      48              :             // n_votes store in each index (value of class) the significance added by each model
    -      49              :             // i.e. n_votes[0] contains how much value has the value 0 of class. That value is generated by the models predictions
    -      50        41920 :             std::vector<double> n_votes(numClasses, 0.0);
    -      51       375272 :             for (int j = 0; j < n_models; ++j) {
    -      52       333352 :                 n_votes[y_pred_[i][j]] += significanceModels.at(j);
    -      53              :             }
    -      54        41920 :             result[i] = torch::tensor(n_votes);
    -      55        41920 :         }
    -      56              :         // To only do one division and gain precision
    -      57          164 :         result /= sum;
    -      58          328 :         return result;
    -      59          164 :     }
    -      60          100 :     std::vector<std::vector<double>> Ensemble::predict_proba(std::vector<std::vector<int>>& X)
    -      61              :     {
    -      62          100 :         if (!fitted) {
    -      63           24 :             throw std::logic_error(ENSEMBLE_NOT_FITTED);
    -      64              :         }
    -      65           76 :         return predict_voting ? predict_average_voting(X) : predict_average_proba(X);
    -      66              :     }
    -      67          452 :     torch::Tensor Ensemble::predict_proba(torch::Tensor& X)
    -      68              :     {
    -      69          452 :         if (!fitted) {
    -      70           24 :             throw std::logic_error(ENSEMBLE_NOT_FITTED);
    -      71              :         }
    -      72          428 :         return predict_voting ? predict_average_voting(X) : predict_average_proba(X);
    -      73              :     }
    -      74           68 :     std::vector<int> Ensemble::predict(std::vector<std::vector<int>>& X)
    -      75              :     {
    -      76           68 :         auto res = predict_proba(X);
    -      77          104 :         return compute_arg_max(res);
    -      78           52 :     }
    -      79          436 :     torch::Tensor Ensemble::predict(torch::Tensor& X)
    -      80              :     {
    -      81          436 :         auto res = predict_proba(X);
    -      82          840 :         return compute_arg_max(res);
    -      83          420 :     }
    -      84          296 :     torch::Tensor Ensemble::predict_average_proba(torch::Tensor& X)
    -      85              :     {
    -      86          296 :         auto n_states = models[0]->getClassNumStates();
    -      87          296 :         torch::Tensor y_pred = torch::zeros({ X.size(1), n_states }, torch::kFloat32);
    -      88          296 :         auto threads{ std::vector<std::thread>() };
    -      89          296 :         std::mutex mtx;
    -      90         1764 :         for (auto i = 0; i < n_models; ++i) {
    -      91         1468 :             threads.push_back(std::thread([&, i]() {
    -      92         1468 :                 auto ypredict = models[i]->predict_proba(X);
    -      93         1468 :                 std::lock_guard<std::mutex> lock(mtx);
    -      94         1468 :                 y_pred += ypredict * significanceModels[i];
    -      95         1468 :                 }));
    -      96              :         }
    -      97         1764 :         for (auto& thread : threads) {
    -      98         1468 :             thread.join();
    -      99              :         }
    -     100          296 :         auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -     101          296 :         y_pred /= sum;
    -     102          592 :         return y_pred;
    -     103          296 :     }
    -     104           44 :     std::vector<std::vector<double>> Ensemble::predict_average_proba(std::vector<std::vector<int>>& X)
    -     105              :     {
    -     106           44 :         auto n_states = models[0]->getClassNumStates();
    -     107           44 :         std::vector<std::vector<double>> y_pred(X[0].size(), std::vector<double>(n_states, 0.0));
    -     108           44 :         auto threads{ std::vector<std::thread>() };
    -     109           44 :         std::mutex mtx;
    -     110          576 :         for (auto i = 0; i < n_models; ++i) {
    -     111          532 :             threads.push_back(std::thread([&, i]() {
    -     112          532 :                 auto ypredict = models[i]->predict_proba(X);
    -     113          532 :                 assert(ypredict.size() == y_pred.size());
    -     114          532 :                 assert(ypredict[0].size() == y_pred[0].size());
    -     115          532 :                 std::lock_guard<std::mutex> lock(mtx);
    -     116              :                 // Multiply each prediction by the significance of the model and then add it to the final prediction
    -     117       110284 :                 for (auto j = 0; j < ypredict.size(); ++j) {
    -     118       109752 :                     std::transform(y_pred[j].begin(), y_pred[j].end(), ypredict[j].begin(), y_pred[j].begin(),
    -     119       739464 :                         [significanceModels = significanceModels[i]](double x, double y) { return x + y * significanceModels; });
    -     120              :                 }
    -     121          532 :                 }));
    -     122              :         }
    -     123          576 :         for (auto& thread : threads) {
    -     124          532 :             thread.join();
    -     125              :         }
    -     126           44 :         auto sum = std::reduce(significanceModels.begin(), significanceModels.end());
    -     127              :         //Divide each element of the prediction by the sum of the significances
    -     128         8436 :         for (auto j = 0; j < y_pred.size(); ++j) {
    -     129        51544 :             std::transform(y_pred[j].begin(), y_pred[j].end(), y_pred[j].begin(), [sum](double x) { return x / sum; });
    -     130              :         }
    -     131           88 :         return y_pred;
    -     132           44 :     }
    -     133           32 :     std::vector<std::vector<double>> Ensemble::predict_average_voting(std::vector<std::vector<int>>& X)
    -     134              :     {
    -     135           32 :         torch::Tensor Xt = bayesnet::vectorToTensor(X, false);
    -     136           32 :         auto y_pred = predict_average_voting(Xt);
    -     137           32 :         std::vector<std::vector<double>> result = tensorToVectorDouble(y_pred);
    -     138           64 :         return result;
    -     139           32 :     }
    -     140          164 :     torch::Tensor Ensemble::predict_average_voting(torch::Tensor& X)
    -     141              :     {
    -     142              :         // Build a m x n_models tensor with the predictions of each model
    -     143          164 :         torch::Tensor y_pred = torch::zeros({ X.size(1), n_models }, torch::kInt32);
    -     144          164 :         auto threads{ std::vector<std::thread>() };
    -     145          164 :         std::mutex mtx;
    -     146         1380 :         for (auto i = 0; i < n_models; ++i) {
    -     147         1216 :             threads.push_back(std::thread([&, i]() {
    -     148         1216 :                 auto ypredict = models[i]->predict(X);
    -     149         1216 :                 std::lock_guard<std::mutex> lock(mtx);
    -     150         3648 :                 y_pred.index_put_({ "...", i }, ypredict);
    -     151         2432 :                 }));
    -     152              :         }
    -     153         1380 :         for (auto& thread : threads) {
    -     154         1216 :             thread.join();
    -     155              :         }
    -     156          328 :         return voting(y_pred);
    -     157          164 :     }
    -     158           80 :     float Ensemble::score(torch::Tensor& X, torch::Tensor& y)
    -     159              :     {
    -     160           80 :         auto y_pred = predict(X);
    -     161           72 :         int correct = 0;
    -     162        22584 :         for (int i = 0; i < y_pred.size(0); ++i) {
    -     163        22512 :             if (y_pred[i].item<int>() == y[i].item<int>()) {
    -     164        19668 :                 correct++;
    -     165              :             }
    -     166              :         }
    -     167          144 :         return (double)correct / y_pred.size(0);
    -     168           72 :     }
    -     169           52 :     float Ensemble::score(std::vector<std::vector<int>>& X, std::vector<int>& y)
    -     170              :     {
    -     171           52 :         auto y_pred = predict(X);
    -     172           44 :         int correct = 0;
    -     173        11164 :         for (int i = 0; i < y_pred.size(); ++i) {
    -     174        11120 :             if (y_pred[i] == y[i]) {
    -     175         9276 :                 correct++;
    -     176              :             }
    -     177              :         }
    -     178           88 :         return (double)correct / y_pred.size();
    -     179           44 :     }
    -     180            4 :     std::vector<std::string> Ensemble::show() const
    -     181              :     {
    -     182            4 :         auto result = std::vector<std::string>();
    -     183           20 :         for (auto i = 0; i < n_models; ++i) {
    -     184           16 :             auto res = models[i]->show();
    -     185           16 :             result.insert(result.end(), res.begin(), res.end());
    -     186           16 :         }
    -     187            8 :         return result;
    -     188            4 :     }
    -     189           16 :     std::vector<std::string> Ensemble::graph(const std::string& title) const
    -     190              :     {
    -     191           16 :         auto result = std::vector<std::string>();
    -     192          108 :         for (auto i = 0; i < n_models; ++i) {
    -     193           92 :             auto res = models[i]->graph(title + "_" + std::to_string(i));
    -     194           92 :             result.insert(result.end(), res.begin(), res.end());
    -     195           92 :         }
    -     196           32 :         return result;
    -     197           16 :     }
    -     198           28 :     int Ensemble::getNumberOfNodes() const
    -     199              :     {
    -     200           28 :         int nodes = 0;
    -     201          348 :         for (auto i = 0; i < n_models; ++i) {
    -     202          320 :             nodes += models[i]->getNumberOfNodes();
    -     203              :         }
    -     204           28 :         return nodes;
    -     205              :     }
    -     206           28 :     int Ensemble::getNumberOfEdges() const
    -     207              :     {
    -     208           28 :         int edges = 0;
    -     209          348 :         for (auto i = 0; i < n_models; ++i) {
    -     210          320 :             edges += models[i]->getNumberOfEdges();
    -     211              :         }
    -     212           28 :         return edges;
    -     213              :     }
    -     214            4 :     int Ensemble::getNumberOfStates() const
    -     215              :     {
    -     216            4 :         int nstates = 0;
    -     217           20 :         for (auto i = 0; i < n_models; ++i) {
    -     218           16 :             nstates += models[i]->getNumberOfStates();
    -     219              :         }
    -     220            4 :         return nstates;
    -     221              :     }
    -     222              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.cc.gcov.overview.html b/html/bayesnet/ensembles/Ensemble.cc.gcov.overview.html deleted file mode 100644 index 8f27468..0000000 --- a/html/bayesnet/ensembles/Ensemble.cc.gcov.overview.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/Ensemble.cc.gcov.png b/html/bayesnet/ensembles/Ensemble.cc.gcov.png deleted file mode 100644 index 5c1d1c73604c53bb2263c6a49198665849939b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmV;B18@9^P)Mm;0KJEsX}~;$c6I zd;VeRL;1hsJTr?&eNI()hdMpAl=!FLu;-uKaw|F}K2wA&{#NIpD*+ak; zb1YW3&L0gsk6Gp%Xy7prDU@t!?RjJam`5!xEc8^(|lBl0=0 z=InNKKx@R6Zfx#e6LH~ssqks^j4J^232016HJU9MGX*~DYv{J?FE&QlbfHubE60m) z#*${hL7TRGN+X_SE~%y9n@NOWWzB$=vQXI3ZAzABG|N?BD^U8917pVGi5pem%w}@{ zK+nnwJqES(yl(2{D&?bcp>5A-lh><{-!r9%Q_8}2a;&uA6gc07iAu;K!LzGWhbt6y zmT&b^p@{jB0eMM`@);<=v&HteBSosIi|^tEl=l?WR=E0BF<#+f@;meZR8H8q(sV&d zdZV}2EQpVdB{rhEHU85r5})hQD_sT0x(e|%m+t80caM$Azft#$fUUrDU}UL-equB$ zdvpdgtZ=!yOV)fz6Y#Wq9f0Q&Wvgitad`z?Z?x>X58)z4DZh{yC1xI1UhOS}BVQ1T53lezhyU}qF!h^x?4zw!qA?e)m)9MU mN-=ER*JrN)i&n4xlgT&X@&!Q55^V+m0000 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %55
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Ensemble::dump_cpt[abi:cxx11]() const8
    bayesnet::Ensemble::topological_order[abi:cxx11]()12
    bayesnet::Ensemble::~Ensemble()124
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.h.func.html b/html/bayesnet/ensembles/Ensemble.h.func.html deleted file mode 100644 index d0e8f25..0000000 --- a/html/bayesnet/ensembles/Ensemble.h.func.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %55
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Ensemble::dump_cpt[abi:cxx11]() const8
    bayesnet::Ensemble::topological_order[abi:cxx11]()12
    bayesnet::Ensemble::~Ensemble()124
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.h.gcov.frameset.html b/html/bayesnet/ensembles/Ensemble.h.gcov.frameset.html deleted file mode 100644 index e552355..0000000 --- a/html/bayesnet/ensembles/Ensemble.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/ensembles/Ensemble.h.gcov.html b/html/bayesnet/ensembles/Ensemble.h.gcov.html deleted file mode 100644 index e0df189..0000000 --- a/html/bayesnet/ensembles/Ensemble.h.gcov.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensembles - Ensemble.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %55
    Test Date:2024-05-06 17:54:04Functions:100.0 %33
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef ENSEMBLE_H
    -       8              : #define ENSEMBLE_H
    -       9              : #include <torch/torch.h>
    -      10              : #include "bayesnet/utils/BayesMetrics.h"
    -      11              : #include "bayesnet/utils/bayesnetUtils.h"
    -      12              : #include "bayesnet/classifiers/Classifier.h"
    -      13              : 
    -      14              : namespace bayesnet {
    -      15              :     class Ensemble : public Classifier {
    -      16              :     public:
    -      17              :         Ensemble(bool predict_voting = true);
    -      18          124 :         virtual ~Ensemble() = default;
    -      19              :         torch::Tensor predict(torch::Tensor& X) override;
    -      20              :         std::vector<int> predict(std::vector<std::vector<int>>& X) override;
    -      21              :         torch::Tensor predict_proba(torch::Tensor& X) override;
    -      22              :         std::vector<std::vector<double>> predict_proba(std::vector<std::vector<int>>& X) override;
    -      23              :         float score(torch::Tensor& X, torch::Tensor& y) override;
    -      24              :         float score(std::vector<std::vector<int>>& X, std::vector<int>& y) override;
    -      25              :         int getNumberOfNodes() const override;
    -      26              :         int getNumberOfEdges() const override;
    -      27              :         int getNumberOfStates() const override;
    -      28              :         std::vector<std::string> show() const override;
    -      29              :         std::vector<std::string> graph(const std::string& title) const override;
    -      30           12 :         std::vector<std::string> topological_order()  override
    -      31              :         {
    -      32           12 :             return std::vector<std::string>();
    -      33              :         }
    -      34            8 :         std::string dump_cpt() const override
    -      35              :         {
    -      36           16 :             return "";
    -      37              :         }
    -      38              :     protected:
    -      39              :         torch::Tensor predict_average_voting(torch::Tensor& X);
    -      40              :         std::vector<std::vector<double>> predict_average_voting(std::vector<std::vector<int>>& X);
    -      41              :         torch::Tensor predict_average_proba(torch::Tensor& X);
    -      42              :         std::vector<std::vector<double>> predict_average_proba(std::vector<std::vector<int>>& X);
    -      43              :         torch::Tensor compute_arg_max(torch::Tensor& X);
    -      44              :         std::vector<int> compute_arg_max(std::vector<std::vector<double>>& X);
    -      45              :         torch::Tensor voting(torch::Tensor& votes);
    -      46              :         unsigned n_models;
    -      47              :         std::vector<std::unique_ptr<Classifier>> models;
    -      48              :         std::vector<double> significanceModels;
    -      49              :         void trainModel(const torch::Tensor& weights) override;
    -      50              :         bool predict_voting;
    -      51              :     };
    -      52              : }
    -      53              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/Ensemble.h.gcov.overview.html b/html/bayesnet/ensembles/Ensemble.h.gcov.overview.html deleted file mode 100644 index 494a8f3..0000000 --- a/html/bayesnet/ensembles/Ensemble.h.gcov.overview.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles/Ensemble.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/ensembles/Ensemble.h.gcov.png b/html/bayesnet/ensembles/Ensemble.h.gcov.png deleted file mode 100644 index ade558642b87c9418ccc47436414358f255c8b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfZ!VDx;*b2*mlth3}i0l9V|5pLQ^7pZ^ul_SI ztOAOIsdL_&mjcP!>K~bUJeTMGe-*yj zw~s8X@6Jd|5#%=#>?*yz!O>Nz$Mb{fU%uB*cgIY=wq&)!^FL4Y=T+_2DS7lj>D{l# z3yu_b3XfB8=Ix!HSZ*OwEItqZ+39?kuJ?Ol&y)~C?5 zZh_O6Y*kXpewpm5DL(D_tm_&_fAtnWiku@-Z@l+{`XuLP8chjKM*KJ4slUwS?znrs e{07I;N6Z3@MGikc=qv&T7=x#)pUXO@geCx1rlunR diff --git a/html/bayesnet/ensembles/index-detail-sort-f.html b/html/bayesnet/ensembles/index-detail-sort-f.html deleted file mode 100644 index dc31de1..0000000 --- a/html/bayesnet/ensembles/index-detail-sort-f.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/index-detail-sort-l.html b/html/bayesnet/ensembles/index-detail-sort-l.html deleted file mode 100644 index 3871cd2..0000000 --- a/html/bayesnet/ensembles/index-detail-sort-l.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/index-detail.html b/html/bayesnet/ensembles/index-detail.html deleted file mode 100644 index 2f18267..0000000 --- a/html/bayesnet/ensembles/index-detail.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/index-sort-f.html b/html/bayesnet/ensembles/index-sort-f.html deleted file mode 100644 index dc31de1..0000000 --- a/html/bayesnet/ensembles/index-sort-f.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/index-sort-l.html b/html/bayesnet/ensembles/index-sort-l.html deleted file mode 100644 index 3871cd2..0000000 --- a/html/bayesnet/ensembles/index-sort-l.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/ensembles/index.html b/html/bayesnet/ensembles/index.html deleted file mode 100644 index 2f18267..0000000 --- a/html/bayesnet/ensembles/index.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/ensembles - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/ensemblesCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.1 %468464
    Test Date:2024-05-06 17:54:04Functions:100.0 %5454
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    A2DE.cc -
    100.0%
    -
    100.0 %2323100.0 %44
    A2DE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODE.cc -
    100.0%
    -
    100.0 %2020100.0 %44
    AODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    AODELd.cc -
    100.0%
    -
    100.0 %2424100.0 %55
    AODELd.h -
    100.0%
    -
    100.0 %11100.0 %11
    BoostAODE.cc -
    98.3%98.3%
    -
    98.3 %237233100.0 %99
    BoostAODE.h -
    100.0%
    -
    100.0 %11100.0 %11
    Ensemble.cc -
    100.0%
    -
    100.0 %155155100.0 %2525
    Ensemble.h -
    100.0%
    -
    100.0 %55100.0 %33
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.cc.func-c.html b/html/bayesnet/feature_selection/CFS.cc.func-c.html deleted file mode 100644 index f592051..0000000 --- a/html/bayesnet/feature_selection/CFS.cc.func-c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.8 %4544
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::CFS::fit()48
    bayesnet::CFS::computeContinueCondition(std::vector<int, std::allocator<int> > const&)220
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.cc.func.html b/html/bayesnet/feature_selection/CFS.cc.func.html deleted file mode 100644 index 08a008e..0000000 --- a/html/bayesnet/feature_selection/CFS.cc.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.8 %4544
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::CFS::computeContinueCondition(std::vector<int, std::allocator<int> > const&)220
    bayesnet::CFS::fit()48
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.cc.gcov.frameset.html b/html/bayesnet/feature_selection/CFS.cc.gcov.frameset.html deleted file mode 100644 index 588ad50..0000000 --- a/html/bayesnet/feature_selection/CFS.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/CFS.cc.gcov.html b/html/bayesnet/feature_selection/CFS.cc.gcov.html deleted file mode 100644 index 8b25468..0000000 --- a/html/bayesnet/feature_selection/CFS.cc.gcov.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.8 %4544
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <limits>
    -       8              : #include "bayesnet/utils/bayesnetUtils.h"
    -       9              : #include "CFS.h"
    -      10              : namespace bayesnet {
    -      11           48 :     void CFS::fit()
    -      12              :     {
    -      13           48 :         initialize();
    -      14           48 :         computeSuLabels();
    -      15           48 :         auto featureOrder = argsort(suLabels); // sort descending order
    -      16           48 :         auto continueCondition = true;
    -      17           48 :         auto feature = featureOrder[0];
    -      18           48 :         selectedFeatures.push_back(feature);
    -      19           48 :         selectedScores.push_back(suLabels[feature]);
    -      20           48 :         featureOrder.erase(featureOrder.begin());
    -      21          268 :         while (continueCondition) {
    -      22          220 :             double merit = std::numeric_limits<double>::lowest();
    -      23          220 :             int bestFeature = -1;
    -      24         1250 :             for (auto feature : featureOrder) {
    -      25         1030 :                 selectedFeatures.push_back(feature);
    -      26              :                 // Compute merit with selectedFeatures
    -      27         1030 :                 auto meritNew = computeMeritCFS();
    -      28         1030 :                 if (meritNew > merit) {
    -      29          450 :                     merit = meritNew;
    -      30          450 :                     bestFeature = feature;
    -      31              :                 }
    -      32         1030 :                 selectedFeatures.pop_back();
    -      33              :             }
    -      34          220 :             if (bestFeature == -1) {
    -      35              :                 // meritNew has to be nan due to constant features
    -      36            0 :                 break;
    -      37              :             }
    -      38          220 :             selectedFeatures.push_back(bestFeature);
    -      39          220 :             selectedScores.push_back(merit);
    -      40          220 :             featureOrder.erase(remove(featureOrder.begin(), featureOrder.end(), bestFeature), featureOrder.end());
    -      41          220 :             continueCondition = computeContinueCondition(featureOrder);
    -      42              :         }
    -      43           48 :         fitted = true;
    -      44           48 :     }
    -      45          220 :     bool CFS::computeContinueCondition(const std::vector<int>& featureOrder)
    -      46              :     {
    -      47          220 :         if (selectedFeatures.size() == maxFeatures || featureOrder.size() == 0) {
    -      48           10 :             return false;
    -      49              :         }
    -      50          210 :         if (selectedScores.size() >= 5) {
    -      51              :             /*
    -      52              :             "To prevent the best first search from exploring the entire
    -      53              :             feature subset search space, a stopping criterion is imposed.
    -      54              :             The search will terminate if five consecutive fully expanded
    -      55              :             subsets show no improvement over the current best subset."
    -      56              :             as stated in Mark A.Hall Thesis
    -      57              :             */
    -      58           76 :             double item_ant = std::numeric_limits<double>::lowest();
    -      59           76 :             int num = 0;
    -      60           76 :             std::vector<double> lastFive(selectedScores.end() - 5, selectedScores.end());
    -      61          304 :             for (auto item : lastFive) {
    -      62          266 :                 if (item_ant == std::numeric_limits<double>::lowest()) {
    -      63           76 :                     item_ant = item;
    -      64              :                 }
    -      65          266 :                 if (item > item_ant) {
    -      66           38 :                     break;
    -      67              :                 } else {
    -      68          228 :                     num++;
    -      69          228 :                     item_ant = item;
    -      70              :                 }
    -      71              :             }
    -      72           76 :             if (num == 5) {
    -      73           38 :                 return false;
    -      74              :             }
    -      75           76 :         }
    -      76          172 :         return true;
    -      77              :     }
    -      78              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.cc.gcov.overview.html b/html/bayesnet/feature_selection/CFS.cc.gcov.overview.html deleted file mode 100644 index dd09ca9..0000000 --- a/html/bayesnet/feature_selection/CFS.cc.gcov.overview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/CFS.cc.gcov.png b/html/bayesnet/feature_selection/CFS.cc.gcov.png deleted file mode 100644 index c4f8398ccddb23303f3d917403ceabb0a6303591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmV+$0_6RPP)%AsmBP?ne1kWI%LseiSmpKH5I51L$$q+28PxkN+azL)3D zOIZIi^XEgJdV71D`v27=FHk);4Nb}G@*7_ca%a}(R_75fDBKxwXC{@%N2KUt-}=Y0 zsLU02MunYXXb7ljmD7bnv@8qreqwZ`8?-6Z^aJVsZruHS4rDgpNz(yc-o)X^Jd dZzC~P{sBRYiLRJHW%d97002ovPDHLkV1nqN@4o;5 diff --git a/html/bayesnet/feature_selection/CFS.h.func-c.html b/html/bayesnet/feature_selection/CFS.h.func-c.html deleted file mode 100644 index 88141b1..0000000 --- a/html/bayesnet/feature_selection/CFS.h.func-c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::CFS::CFS(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&)29
    bayesnet::CFS::~CFS()116
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.h.func.html b/html/bayesnet/feature_selection/CFS.h.func.html deleted file mode 100644 index 25055ab..0000000 --- a/html/bayesnet/feature_selection/CFS.h.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::CFS::CFS(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&)29
    bayesnet::CFS::~CFS()116
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.h.gcov.frameset.html b/html/bayesnet/feature_selection/CFS.h.gcov.frameset.html deleted file mode 100644 index ee18ddb..0000000 --- a/html/bayesnet/feature_selection/CFS.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/CFS.h.gcov.html b/html/bayesnet/feature_selection/CFS.h.gcov.html deleted file mode 100644 index dcc0e27..0000000 --- a/html/bayesnet/feature_selection/CFS.h.gcov.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - CFS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %44
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef CFS_H
    -       8              : #define CFS_H
    -       9              : #include <torch/torch.h>
    -      10              : #include <vector>
    -      11              : #include "bayesnet/feature_selection/FeatureSelect.h"
    -      12              : namespace bayesnet {
    -      13              :     class CFS : public FeatureSelect {
    -      14              :     public:
    -      15              :         // dataset is a n+1xm tensor of integers where dataset[-1] is the y std::vector
    -      16           29 :         CFS(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights) :
    -      17           29 :             FeatureSelect(samples, features, className, maxFeatures, classNumStates, weights)
    -      18              :         {
    -      19           29 :         }
    -      20          116 :         virtual ~CFS() {};
    -      21              :         void fit() override;
    -      22              :     private:
    -      23              :         bool computeContinueCondition(const std::vector<int>& featureOrder);
    -      24              :     };
    -      25              : }
    -      26              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/CFS.h.gcov.overview.html b/html/bayesnet/feature_selection/CFS.h.gcov.overview.html deleted file mode 100644 index 3eec86d..0000000 --- a/html/bayesnet/feature_selection/CFS.h.gcov.overview.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/CFS.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/CFS.h.gcov.png b/html/bayesnet/feature_selection/CFS.h.gcov.png deleted file mode 100644 index 7278b3e79d72bf74e141dc0236a79f1bdaba5672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIp!VDxY{W&%TNJ#|vgt-3y|9=$_EPo#x`|3Xf z!z!RSm^$aZc`1<1S>O>_%)r2R1cVukWo) z_kC3w8knxud=ZGhEMwX(lRa|{pNQCzuA)Xpm&<=vofF(z&%DlP)zOO2o%;_+1+(Va zMjwx>Xv*YX - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FCBF::fit()56
    bayesnet::FCBF::FCBF(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&, double)76
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.cc.func.html b/html/bayesnet/feature_selection/FCBF.cc.func.html deleted file mode 100644 index 268b9d7..0000000 --- a/html/bayesnet/feature_selection/FCBF.cc.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FCBF::FCBF(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&, double)76
    bayesnet::FCBF::fit()56
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.cc.gcov.frameset.html b/html/bayesnet/feature_selection/FCBF.cc.gcov.frameset.html deleted file mode 100644 index 4878c98..0000000 --- a/html/bayesnet/feature_selection/FCBF.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/FCBF.cc.gcov.html b/html/bayesnet/feature_selection/FCBF.cc.gcov.html deleted file mode 100644 index 8d88c3f..0000000 --- a/html/bayesnet/feature_selection/FCBF.cc.gcov.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2626
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "bayesnet/utils/bayesnetUtils.h"
    -       8              : #include "FCBF.h"
    -       9              : namespace bayesnet {
    -      10              : 
    -      11           76 :     FCBF::FCBF(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights, const double threshold) :
    -      12           76 :         FeatureSelect(samples, features, className, maxFeatures, classNumStates, weights), threshold(threshold)
    -      13              :     {
    -      14           76 :         if (threshold < 1e-7) {
    -      15           20 :             throw std::invalid_argument("Threshold cannot be less than 1e-7");
    -      16              :         }
    -      17           76 :     }
    -      18           56 :     void FCBF::fit()
    -      19              :     {
    -      20           56 :         initialize();
    -      21           56 :         computeSuLabels();
    -      22           56 :         auto featureOrder = argsort(suLabels); // sort descending order
    -      23           56 :         auto featureOrderCopy = featureOrder;
    -      24          419 :         for (const auto& feature : featureOrder) {
    -      25              :             // Don't self compare
    -      26          372 :             featureOrderCopy.erase(featureOrderCopy.begin());
    -      27          372 :             if (suLabels.at(feature) == 0.0) {
    -      28              :                 // The feature has been removed from the list
    -      29          153 :                 continue;
    -      30              :             }
    -      31          219 :             if (suLabels.at(feature) < threshold) {
    -      32            5 :                 break;
    -      33              :             }
    -      34              :             // Remove redundant features
    -      35         1220 :             for (const auto& featureCopy : featureOrderCopy) {
    -      36         1006 :                 double value = computeSuFeatures(feature, featureCopy);
    -      37         1006 :                 if (value >= suLabels.at(featureCopy)) {
    -      38              :                     // Remove feature from list
    -      39          333 :                     suLabels[featureCopy] = 0.0;
    -      40              :                 }
    -      41              :             }
    -      42          214 :             selectedFeatures.push_back(feature);
    -      43          214 :             selectedScores.push_back(suLabels[feature]);
    -      44          214 :             if (selectedFeatures.size() == maxFeatures) {
    -      45            4 :                 break;
    -      46              :             }
    -      47              :         }
    -      48           56 :         fitted = true;
    -      49           56 :     }
    -      50              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.cc.gcov.overview.html b/html/bayesnet/feature_selection/FCBF.cc.gcov.overview.html deleted file mode 100644 index daa8e3d..0000000 --- a/html/bayesnet/feature_selection/FCBF.cc.gcov.overview.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/FCBF.cc.gcov.png b/html/bayesnet/feature_selection/FCBF.cc.gcov.png deleted file mode 100644 index 1a469dc7b3b25dd5cdec47ae6fae1ab771ad5f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P);Zr z*tCboG|q3pmBwQmIcNnd&=;q`R*LvpjAJ<$HlRP`cPPrB+@PSHhH*gn8^nBKmx1^jA&o02oQZ=9e zZPfMD8bKpGIiqU2;O*AwduV3eQEtkVodzW&&b1ogu0Wjoc8vyi9-Ywk*jk{j3yw=^ rCG+2*ILJBll~S9$3w^lF&aj++;z;fA(iR;V00000NkvXXu0mjf@>H#( diff --git a/html/bayesnet/feature_selection/FCBF.h.func-c.html b/html/bayesnet/feature_selection/FCBF.h.func-c.html deleted file mode 100644 index 6966211..0000000 --- a/html/bayesnet/feature_selection/FCBF.h.func-c.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FCBF::~FCBF()56
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.h.func.html b/html/bayesnet/feature_selection/FCBF.h.func.html deleted file mode 100644 index 137b177..0000000 --- a/html/bayesnet/feature_selection/FCBF.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FCBF::~FCBF()56
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.h.gcov.frameset.html b/html/bayesnet/feature_selection/FCBF.h.gcov.frameset.html deleted file mode 100644 index f36d486..0000000 --- a/html/bayesnet/feature_selection/FCBF.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/FCBF.h.gcov.html b/html/bayesnet/feature_selection/FCBF.h.gcov.html deleted file mode 100644 index 19d3186..0000000 --- a/html/bayesnet/feature_selection/FCBF.h.gcov.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FCBF.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef FCBF_H
    -       8              : #define FCBF_H
    -       9              : #include <torch/torch.h>
    -      10              : #include <vector>
    -      11              : #include "bayesnet/feature_selection/FeatureSelect.h"
    -      12              : namespace bayesnet {
    -      13              :     class FCBF : public FeatureSelect {
    -      14              :     public:
    -      15              :         // dataset is a n+1xm tensor of integers where dataset[-1] is the y std::vector
    -      16              :         FCBF(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights, const double threshold);
    -      17           56 :         virtual ~FCBF() {};
    -      18              :         void fit() override;
    -      19              :     private:
    -      20              :         double threshold = -1;
    -      21              :     };
    -      22              : }
    -      23              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FCBF.h.gcov.overview.html b/html/bayesnet/feature_selection/FCBF.h.gcov.overview.html deleted file mode 100644 index dab5a4c..0000000 --- a/html/bayesnet/feature_selection/FCBF.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FCBF.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/FCBF.h.gcov.png b/html/bayesnet/feature_selection/FCBF.h.gcov.png deleted file mode 100644 index 971e62c40ce7e1f59eb7ce89fbc7591af6049be2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIy!VDzylCF9IDTx4|5ZC|z|E~gq - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %4444
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FeatureSelect::computeSuLabels()151
    bayesnet::FeatureSelect::initialize()151
    bayesnet::FeatureSelect::getScores() const156
    bayesnet::FeatureSelect::getFeatures() const171
    bayesnet::FeatureSelect::FeatureSelect(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&)221
    bayesnet::FeatureSelect::computeMeritCFS()1239
    bayesnet::FeatureSelect::symmetricalUncertainty(int, int)3728
    bayesnet::FeatureSelect::computeSuFeatures(int, int)7921
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.cc.func.html b/html/bayesnet/feature_selection/FeatureSelect.cc.func.html deleted file mode 100644 index 679b2f0..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.cc.func.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %4444
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FeatureSelect::FeatureSelect(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&)221
    bayesnet::FeatureSelect::computeMeritCFS()1239
    bayesnet::FeatureSelect::computeSuFeatures(int, int)7921
    bayesnet::FeatureSelect::computeSuLabels()151
    bayesnet::FeatureSelect::getFeatures() const171
    bayesnet::FeatureSelect::getScores() const156
    bayesnet::FeatureSelect::initialize()151
    bayesnet::FeatureSelect::symmetricalUncertainty(int, int)3728
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.frameset.html b/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.frameset.html deleted file mode 100644 index 50030eb..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.html b/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.html deleted file mode 100644 index 66b3f08..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %4444
    Test Date:2024-05-06 17:54:04Functions:100.0 %88
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <limits>
    -       8              : #include "bayesnet/utils/bayesnetUtils.h"
    -       9              : #include "FeatureSelect.h"
    -      10              : namespace bayesnet {
    -      11          221 :     FeatureSelect::FeatureSelect(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights) :
    -      12          221 :         Metrics(samples, features, className, classNumStates), maxFeatures(maxFeatures == 0 ? samples.size(0) - 1 : maxFeatures), weights(weights)
    -      13              : 
    -      14              :     {
    -      15          221 :     }
    -      16          151 :     void FeatureSelect::initialize()
    -      17              :     {
    -      18          151 :         selectedFeatures.clear();
    -      19          151 :         selectedScores.clear();
    -      20          151 :     }
    -      21         3728 :     double FeatureSelect::symmetricalUncertainty(int a, int b)
    -      22              :     {
    -      23              :         /*
    -      24              :         Compute symmetrical uncertainty. Normalize* information gain (mutual
    -      25              :         information) with the entropies of the features in order to compensate
    -      26              :         the bias due to high cardinality features. *Range [0, 1]
    -      27              :         (https://www.sciencedirect.com/science/article/pii/S0020025519303603)
    -      28              :         */
    -      29        11184 :         auto x = samples.index({ a, "..." });
    -      30        11184 :         auto y = samples.index({ b, "..." });
    -      31         3728 :         auto mu = mutualInformation(x, y, weights);
    -      32         3728 :         auto hx = entropy(x, weights);
    -      33         3728 :         auto hy = entropy(y, weights);
    -      34         3728 :         return 2.0 * mu / (hx + hy);
    -      35        11184 :     }
    -      36          151 :     void FeatureSelect::computeSuLabels()
    -      37              :     {
    -      38              :         // Compute Simmetrical Uncertainty between features and labels
    -      39              :         // https://en.wikipedia.org/wiki/Symmetric_uncertainty
    -      40         1258 :         for (int i = 0; i < features.size(); ++i) {
    -      41         1107 :             suLabels.push_back(symmetricalUncertainty(i, -1));
    -      42              :         }
    -      43          151 :     }
    -      44         7921 :     double FeatureSelect::computeSuFeatures(const int firstFeature, const int secondFeature)
    -      45              :     {
    -      46              :         // Compute Simmetrical Uncertainty between features
    -      47              :         // https://en.wikipedia.org/wiki/Symmetric_uncertainty
    -      48              :         try {
    -      49         7921 :             return suFeatures.at({ firstFeature, secondFeature });
    -      50              :         }
    -      51         2621 :         catch (const std::out_of_range& e) {
    -      52         2621 :             double result = symmetricalUncertainty(firstFeature, secondFeature);
    -      53         2621 :             suFeatures[{firstFeature, secondFeature}] = result;
    -      54         2621 :             return result;
    -      55         2621 :         }
    -      56              :     }
    -      57         1239 :     double FeatureSelect::computeMeritCFS()
    -      58              :     {
    -      59         1239 :         double rcf = 0;
    -      60         5693 :         for (auto feature : selectedFeatures) {
    -      61         4454 :             rcf += suLabels[feature];
    -      62              :         }
    -      63         1239 :         double rff = 0;
    -      64         1239 :         int n = selectedFeatures.size();
    -      65         8154 :         for (const auto& item : doCombinations(selectedFeatures)) {
    -      66         6915 :             rff += computeSuFeatures(item.first, item.second);
    -      67         1239 :         }
    -      68         1239 :         return rcf / sqrt(n + (n * n - n) * rff);
    -      69              :     }
    -      70          171 :     std::vector<int> FeatureSelect::getFeatures() const
    -      71              :     {
    -      72          171 :         if (!fitted) {
    -      73           20 :             throw std::runtime_error("FeatureSelect not fitted");
    -      74              :         }
    -      75          151 :         return selectedFeatures;
    -      76              :     }
    -      77          156 :     std::vector<double> FeatureSelect::getScores() const
    -      78              :     {
    -      79          156 :         if (!fitted) {
    -      80           20 :             throw std::runtime_error("FeatureSelect not fitted");
    -      81              :         }
    -      82          136 :         return selectedScores;
    -      83              :     }
    -      84              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.overview.html b/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.overview.html deleted file mode 100644 index 4498404..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.overview.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.png b/html/bayesnet/feature_selection/FeatureSelect.cc.gcov.png deleted file mode 100644 index e61c0b74e391fca1a86922ecdd7ce340e12aeee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP) z7}+EFB3?Tz8%Z_dD6RQ5?G4NA} zmm!~z0F6@FFMvomNK41xO}ulM^1H_>qcYzUs7x=;t zYW<>T`s&@3SvXXg%RQKhJ(;?ugp_JS)QlYJ5#E_-!m0*((s|#mBr}rLbp92Owp~3u zau+(LZs8FtdFu3l$15JS9MOpbpe)^X*r|7Nc4{r? zVp1xPwqq(i)D&hMaiiAmJ?bh?li}}?yDTKFPBKb0?~+MGVj4nsk~T%5v|Qv%2Dl>% z{wP}mr4P;8>IL?Io=N#KaGM^pP1Mo - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FeatureSelect::~FeatureSelect()111
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.h.func.html b/html/bayesnet/feature_selection/FeatureSelect.h.func.html deleted file mode 100644 index b72ffbf..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::FeatureSelect::~FeatureSelect()111
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.frameset.html b/html/bayesnet/feature_selection/FeatureSelect.h.gcov.frameset.html deleted file mode 100644 index 3302cc5..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.html b/html/bayesnet/feature_selection/FeatureSelect.h.gcov.html deleted file mode 100644 index a01bdf7..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - FeatureSelect.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef FEATURE_SELECT_H
    -       8              : #define FEATURE_SELECT_H
    -       9              : #include <torch/torch.h>
    -      10              : #include <vector>
    -      11              : #include "bayesnet/utils/BayesMetrics.h"
    -      12              : namespace bayesnet {
    -      13              :     class FeatureSelect : public Metrics {
    -      14              :     public:
    -      15              :         // dataset is a n+1xm tensor of integers where dataset[-1] is the y std::vector
    -      16              :         FeatureSelect(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights);
    -      17          111 :         virtual ~FeatureSelect() {};
    -      18              :         virtual void fit() = 0;
    -      19              :         std::vector<int> getFeatures() const;
    -      20              :         std::vector<double> getScores() const;
    -      21              :     protected:
    -      22              :         void initialize();
    -      23              :         void computeSuLabels();
    -      24              :         double computeSuFeatures(const int a, const int b);
    -      25              :         double symmetricalUncertainty(int a, int b);
    -      26              :         double computeMeritCFS();
    -      27              :         const torch::Tensor& weights;
    -      28              :         int maxFeatures;
    -      29              :         std::vector<int> selectedFeatures;
    -      30              :         std::vector<double> selectedScores;
    -      31              :         std::vector<double> suLabels;
    -      32              :         std::map<std::pair<int, int>, double> suFeatures;
    -      33              :         bool fitted = false;
    -      34              :     };
    -      35              : }
    -      36              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.overview.html b/html/bayesnet/feature_selection/FeatureSelect.h.gcov.overview.html deleted file mode 100644 index 3a8b201..0000000 --- a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.overview.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/FeatureSelect.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/FeatureSelect.h.gcov.png b/html/bayesnet/feature_selection/FeatureSelect.h.gcov.png deleted file mode 100644 index da3566ccda6cf51de07d5f26fef01004fe4307cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$6!VDze^epfMQW60^A+G=b|6c_J%iqVwzWUF= zunH&+rp|e9UJ7J$7I;J!GcfQS0b$0e+I-SL!Bd_tjv*GkQ$soh4=8Y4<}GO5<#@M# z`>&#o29xWXuS*#um@Ju*)6&^1ah##FcFFbgX3bU?C2z1@dJy&?IMA!|w2NLp zhtrv_C)fL|cG*>OWO|V7{c1yBox~$@1gYUo3%yF$aANnEc4fDDSx&hyJJpKgq6@#a%pUXO@ GgeCxY^Mx<~ diff --git a/html/bayesnet/feature_selection/IWSS.cc.func-c.html b/html/bayesnet/feature_selection/IWSS.cc.func-c.html deleted file mode 100644 index 45a4ce3..0000000 --- a/html/bayesnet/feature_selection/IWSS.cc.func-c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.7 %3029
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::IWSS::fit()47
    bayesnet::IWSS::IWSS(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&, double)87
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.cc.func.html b/html/bayesnet/feature_selection/IWSS.cc.func.html deleted file mode 100644 index 54a0e67..0000000 --- a/html/bayesnet/feature_selection/IWSS.cc.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.7 %3029
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::IWSS::IWSS(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, at::Tensor const&, double)87
    bayesnet::IWSS::fit()47
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.cc.gcov.frameset.html b/html/bayesnet/feature_selection/IWSS.cc.gcov.frameset.html deleted file mode 100644 index 4d69b9c..0000000 --- a/html/bayesnet/feature_selection/IWSS.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/IWSS.cc.gcov.html b/html/bayesnet/feature_selection/IWSS.cc.gcov.html deleted file mode 100644 index b53a393..0000000 --- a/html/bayesnet/feature_selection/IWSS.cc.gcov.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:96.7 %3029
    Test Date:2024-05-06 17:54:04Functions:100.0 %22
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <limits>
    -       8              : #include "bayesnet/utils/bayesnetUtils.h"
    -       9              : #include "IWSS.h"
    -      10              : namespace bayesnet {
    -      11           87 :     IWSS::IWSS(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights, const double threshold) :
    -      12           87 :         FeatureSelect(samples, features, className, maxFeatures, classNumStates, weights), threshold(threshold)
    -      13              :     {
    -      14           87 :         if (threshold < 0 || threshold > .5) {
    -      15           40 :             throw std::invalid_argument("Threshold has to be in [0, 0.5]");
    -      16              :         }
    -      17           87 :     }
    -      18           47 :     void IWSS::fit()
    -      19              :     {
    -      20           47 :         initialize();
    -      21           47 :         computeSuLabels();
    -      22           47 :         auto featureOrder = argsort(suLabels); // sort descending order
    -      23           47 :         auto featureOrderCopy = featureOrder;
    -      24              :         // Add first and second features to result
    -      25              :         //     First with its own score
    -      26           47 :         auto first_feature = pop_first(featureOrderCopy);
    -      27           47 :         selectedFeatures.push_back(first_feature);
    -      28           47 :         selectedScores.push_back(suLabels.at(first_feature));
    -      29              :         //     Second with the score of the candidates
    -      30           47 :         selectedFeatures.push_back(pop_first(featureOrderCopy));
    -      31           47 :         auto merit = computeMeritCFS();
    -      32           47 :         selectedScores.push_back(merit);
    -      33          162 :         for (const auto feature : featureOrderCopy) {
    -      34          162 :             selectedFeatures.push_back(feature);
    -      35              :             // Compute merit with selectedFeatures
    -      36          162 :             auto meritNew = computeMeritCFS();
    -      37          162 :             double delta = merit != 0.0 ? std::abs(merit - meritNew) / merit : 0.0;
    -      38          162 :             if (meritNew > merit || delta < threshold) {
    -      39          117 :                 if (meritNew > merit) {
    -      40            0 :                     merit = meritNew;
    -      41              :                 }
    -      42          117 :                 selectedScores.push_back(meritNew);
    -      43              :             } else {
    -      44           45 :                 selectedFeatures.pop_back();
    -      45           47 :                 break;
    -      46              :             }
    -      47          117 :             if (selectedFeatures.size() == maxFeatures) {
    -      48            2 :                 break;
    -      49              :             }
    -      50              :         }
    -      51           47 :         fitted = true;
    -      52           47 :     }
    -      53              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.cc.gcov.overview.html b/html/bayesnet/feature_selection/IWSS.cc.gcov.overview.html deleted file mode 100644 index 276b9c5..0000000 --- a/html/bayesnet/feature_selection/IWSS.cc.gcov.overview.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/IWSS.cc.gcov.png b/html/bayesnet/feature_selection/IWSS.cc.gcov.png deleted file mode 100644 index 38463bcafe93a34d0973d454a8f8e7f96d7a0bfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP) z1;8VLeHt`s$6@F;jgP@-R-vJqttx?b%tX`nbixL7j_RPIFpbh1N1>${DMZ~%)o~2Q zoPcII?;>IkYFVm|>GlG)9rls;rkEZ*$0u|uJa& - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::IWSS::~IWSS()48
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.h.func.html b/html/bayesnet/feature_selection/IWSS.h.func.html deleted file mode 100644 index d0ed2a5..0000000 --- a/html/bayesnet/feature_selection/IWSS.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::IWSS::~IWSS()48
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.h.gcov.frameset.html b/html/bayesnet/feature_selection/IWSS.h.gcov.frameset.html deleted file mode 100644 index 949a657..0000000 --- a/html/bayesnet/feature_selection/IWSS.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/feature_selection/IWSS.h.gcov.html b/html/bayesnet/feature_selection/IWSS.h.gcov.html deleted file mode 100644 index a31c3e2..0000000 --- a/html/bayesnet/feature_selection/IWSS.h.gcov.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selection - IWSS.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef IWSS_H
    -       8              : #define IWSS_H
    -       9              : #include <vector>
    -      10              : #include <torch/torch.h>
    -      11              : #include "FeatureSelect.h"
    -      12              : namespace bayesnet {
    -      13              :     class IWSS : public FeatureSelect {
    -      14              :     public:
    -      15              :         // dataset is a n+1xm tensor of integers where dataset[-1] is the y std::vector
    -      16              :         IWSS(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int maxFeatures, const int classNumStates, const torch::Tensor& weights, const double threshold);
    -      17           48 :         virtual ~IWSS() {};
    -      18              :         void fit() override;
    -      19              :     private:
    -      20              :         double threshold = -1;
    -      21              :     };
    -      22              : }
    -      23              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/IWSS.h.gcov.overview.html b/html/bayesnet/feature_selection/IWSS.h.gcov.overview.html deleted file mode 100644 index c38ee9d..0000000 --- a/html/bayesnet/feature_selection/IWSS.h.gcov.overview.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection/IWSS.h - - - - - - - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/feature_selection/IWSS.h.gcov.png b/html/bayesnet/feature_selection/IWSS.h.gcov.png deleted file mode 100644 index d7f9b0a8bc0de5ec0916110c264ea6ce818cbcf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIy!VDzylCF9IDTx4|5ZC|z|E~gq - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/index-detail-sort-l.html b/html/bayesnet/feature_selection/index-detail-sort-l.html deleted file mode 100644 index c644fe0..0000000 --- a/html/bayesnet/feature_selection/index-detail-sort-l.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/index-detail.html b/html/bayesnet/feature_selection/index-detail.html deleted file mode 100644 index 5e03de6..0000000 --- a/html/bayesnet/feature_selection/index-detail.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/index-sort-f.html b/html/bayesnet/feature_selection/index-sort-f.html deleted file mode 100644 index d0145d5..0000000 --- a/html/bayesnet/feature_selection/index-sort-f.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/index-sort-l.html b/html/bayesnet/feature_selection/index-sort-l.html deleted file mode 100644 index c644fe0..0000000 --- a/html/bayesnet/feature_selection/index-sort-l.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/feature_selection/index.html b/html/bayesnet/feature_selection/index.html deleted file mode 100644 index 5e03de6..0000000 --- a/html/bayesnet/feature_selection/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/feature_selection - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/feature_selectionCoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.7 %152150
    Test Date:2024-05-06 17:54:04Functions:100.0 %1919
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    CFS.cc -
    97.8%97.8%
    -
    97.8 %4544100.0 %22
    CFS.h -
    100.0%
    -
    100.0 %44100.0 %22
    FCBF.cc -
    100.0%
    -
    100.0 %2626100.0 %22
    FCBF.h -
    100.0%
    -
    100.0 %11100.0 %11
    FeatureSelect.cc -
    100.0%
    -
    100.0 %4444100.0 %88
    FeatureSelect.h -
    100.0%
    -
    100.0 %11100.0 %11
    IWSS.cc -
    96.7%96.7%
    -
    96.7 %3029100.0 %22
    IWSS.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index-detail-sort-f.html b/html/bayesnet/index-detail-sort-f.html deleted file mode 100644 index 5fba070..0000000 --- a/html/bayesnet/index-detail-sort-f.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index-detail-sort-l.html b/html/bayesnet/index-detail-sort-l.html deleted file mode 100644 index 9283a50..0000000 --- a/html/bayesnet/index-detail-sort-l.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index-detail.html b/html/bayesnet/index-detail.html deleted file mode 100644 index c4bf771..0000000 --- a/html/bayesnet/index-detail.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index-sort-f.html b/html/bayesnet/index-sort-f.html deleted file mode 100644 index 5fba070..0000000 --- a/html/bayesnet/index-sort-f.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index-sort-l.html b/html/bayesnet/index-sort-l.html deleted file mode 100644 index 9283a50..0000000 --- a/html/bayesnet/index-sort-l.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/index.html b/html/bayesnet/index.html deleted file mode 100644 index c4bf771..0000000 --- a/html/bayesnet/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnetCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BaseClassifier.h -
    100.0%
    -
    100.0 %11100.0 %11
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.cc.func-c.html b/html/bayesnet/network/Network.cc.func-c.html deleted file mode 100644 index 82785c8..0000000 --- a/html/bayesnet/network/Network.cc.func-c.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %295295
    Test Date:2024-05-06 17:54:04Functions:100.0 %4040
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Network::fit(at::Tensor const&, at::Tensor const&, at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)4
    bayesnet::Network::Network(float)8
    bayesnet::Network::dump_cpt[abi:cxx11]() const8
    bayesnet::Network::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&)20
    bayesnet::Network::show[abi:cxx11]() const28
    bayesnet::Network::getSamples()48
    bayesnet::Network::getStates() const48
    bayesnet::Network::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&)48
    bayesnet::Network::fit(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&, std::vector<double, std::allocator<double> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)92
    bayesnet::Network::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const112
    bayesnet::Network::topological_sort[abi:cxx11]()220
    bayesnet::Network::getNumEdges() const364
    bayesnet::Network::getFeatures[abi:cxx11]() const380
    bayesnet::Network::getEdges[abi:cxx11]() const408
    bayesnet::Network::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&)552
    bayesnet::Network::predict_proba(at::Tensor const&)1476
    bayesnet::Network::initialize()1740
    bayesnet::Network::fit(at::Tensor const&, at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)1792
    bayesnet::Network::completeFit(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)1824
    bayesnet::Network::setStates(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)1824
    bayesnet::Network::predict(at::Tensor const&)1844
    bayesnet::Network::checkFitData(int, int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)1888
    bayesnet::Network::Network(bayesnet::Network const&)2244
    bayesnet::Network::getMaxThreads() const2256
    bayesnet::Network::Network()2332
    bayesnet::Network::getClassNumStates() const2616
    bayesnet::Network::predict_tensor(at::Tensor const&, bool)3320
    bayesnet::Network::addNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)31216
    bayesnet::Network::completeFit(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)::{lambda()#1}::operator()() const32828
    bayesnet::Network::setStates(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const32828
    bayesnet::Network::addEdge(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)59152
    bayesnet::Network::isCyclic(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)70324
    bayesnet::Network::predict_sample(std::vector<int, std::allocator<int> > const&)114512
    bayesnet::Network::predict_sample(at::Tensor const&)781712
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)896208
    bayesnet::Network::computeFactor(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)3734984
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda()#1}::operator()() const3734984
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda(double const&)#1}::operator()(double const&) const3734984
    bayesnet::Network::getClassName[abi:cxx11]() const3735008
    bayesnet::Network::getNodes[abi:cxx11]()3735276
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.cc.func.html b/html/bayesnet/network/Network.cc.func.html deleted file mode 100644 index 7369fb0..0000000 --- a/html/bayesnet/network/Network.cc.func.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %295295
    Test Date:2024-05-06 17:54:04Functions:100.0 %4040
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Network::Network()2332
    bayesnet::Network::Network(bayesnet::Network const&)2244
    bayesnet::Network::Network(float)8
    bayesnet::Network::addEdge(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)59152
    bayesnet::Network::addNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)31216
    bayesnet::Network::checkFitData(int, int, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)1888
    bayesnet::Network::completeFit(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)1824
    bayesnet::Network::completeFit(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&, at::Tensor const&)::{lambda()#1}::operator()() const32828
    bayesnet::Network::computeFactor(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)3734984
    bayesnet::Network::dump_cpt[abi:cxx11]() const8
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)896208
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda()#1}::operator()() const3734984
    bayesnet::Network::exactInference(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda(double const&)#1}::operator()(double const&) const3734984
    bayesnet::Network::fit(at::Tensor const&, at::Tensor const&, at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)4
    bayesnet::Network::fit(at::Tensor const&, at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)1792
    bayesnet::Network::fit(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&, std::vector<double, std::allocator<double> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)92
    bayesnet::Network::getClassName[abi:cxx11]() const3735008
    bayesnet::Network::getClassNumStates() const2616
    bayesnet::Network::getEdges[abi:cxx11]() const408
    bayesnet::Network::getFeatures[abi:cxx11]() const380
    bayesnet::Network::getMaxThreads() const2256
    bayesnet::Network::getNodes[abi:cxx11]()3735276
    bayesnet::Network::getNumEdges() const364
    bayesnet::Network::getSamples()48
    bayesnet::Network::getStates() const48
    bayesnet::Network::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const112
    bayesnet::Network::initialize()1740
    bayesnet::Network::isCyclic(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)70324
    bayesnet::Network::predict(at::Tensor const&)1844
    bayesnet::Network::predict(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&)48
    bayesnet::Network::predict_proba(at::Tensor const&)1476
    bayesnet::Network::predict_proba(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&)552
    bayesnet::Network::predict_sample(at::Tensor const&)781712
    bayesnet::Network::predict_sample(std::vector<int, std::allocator<int> > const&)114512
    bayesnet::Network::predict_tensor(at::Tensor const&, bool)3320
    bayesnet::Network::score(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&)20
    bayesnet::Network::setStates(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)1824
    bayesnet::Network::setStates(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<int, std::allocator<int> > > > > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const32828
    bayesnet::Network::show[abi:cxx11]() const28
    bayesnet::Network::topological_sort[abi:cxx11]()220
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.cc.gcov.frameset.html b/html/bayesnet/network/Network.cc.gcov.frameset.html deleted file mode 100644 index 4233619..0000000 --- a/html/bayesnet/network/Network.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/network/Network.cc.gcov.html b/html/bayesnet/network/Network.cc.gcov.html deleted file mode 100644 index 4ebb2a5..0000000 --- a/html/bayesnet/network/Network.cc.gcov.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %295295
    Test Date:2024-05-06 17:54:04Functions:100.0 %4040
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <thread>
    -       8              : #include <mutex>
    -       9              : #include <sstream>
    -      10              : #include "Network.h"
    -      11              : #include "bayesnet/utils/bayesnetUtils.h"
    -      12              : namespace bayesnet {
    -      13         2332 :     Network::Network() : fitted{ false }, maxThreads{ 0.95 }, classNumStates{ 0 }, laplaceSmoothing{ 0 }
    -      14              :     {
    -      15         2332 :     }
    -      16            8 :     Network::Network(float maxT) : fitted{ false }, maxThreads{ maxT }, classNumStates{ 0 }, laplaceSmoothing{ 0 }
    -      17              :     {
    -      18              : 
    -      19            8 :     }
    -      20         2244 :     Network::Network(const Network& other) : laplaceSmoothing(other.laplaceSmoothing), features(other.features), className(other.className), classNumStates(other.getClassNumStates()),
    -      21         4488 :         maxThreads(other.getMaxThreads()), fitted(other.fitted), samples(other.samples)
    -      22              :     {
    -      23         2244 :         if (samples.defined())
    -      24            4 :             samples = samples.clone();
    -      25         2264 :         for (const auto& node : other.nodes) {
    -      26           20 :             nodes[node.first] = std::make_unique<Node>(*node.second);
    -      27              :         }
    -      28         2244 :     }
    -      29         1740 :     void Network::initialize()
    -      30              :     {
    -      31         1740 :         features.clear();
    -      32         1740 :         className = "";
    -      33         1740 :         classNumStates = 0;
    -      34         1740 :         fitted = false;
    -      35         1740 :         nodes.clear();
    -      36         1740 :         samples = torch::Tensor();
    -      37         1740 :     }
    -      38         2256 :     float Network::getMaxThreads() const
    -      39              :     {
    -      40         2256 :         return maxThreads;
    -      41              :     }
    -      42           48 :     torch::Tensor& Network::getSamples()
    -      43              :     {
    -      44           48 :         return samples;
    -      45              :     }
    -      46        31216 :     void Network::addNode(const std::string& name)
    -      47              :     {
    -      48        31216 :         if (name == "") {
    -      49            8 :             throw std::invalid_argument("Node name cannot be empty");
    -      50              :         }
    -      51        31208 :         if (nodes.find(name) != nodes.end()) {
    -      52            4 :             return;
    -      53              :         }
    -      54        31204 :         if (find(features.begin(), features.end(), name) == features.end()) {
    -      55        31204 :             features.push_back(name);
    -      56              :         }
    -      57        31204 :         nodes[name] = std::make_unique<Node>(name);
    -      58              :     }
    -      59          380 :     std::vector<std::string> Network::getFeatures() const
    -      60              :     {
    -      61          380 :         return features;
    -      62              :     }
    -      63         2616 :     int Network::getClassNumStates() const
    -      64              :     {
    -      65         2616 :         return classNumStates;
    -      66              :     }
    -      67           48 :     int Network::getStates() const
    -      68              :     {
    -      69           48 :         int result = 0;
    -      70          288 :         for (auto& node : nodes) {
    -      71          240 :             result += node.second->getNumStates();
    -      72              :         }
    -      73           48 :         return result;
    -      74              :     }
    -      75      3735008 :     std::string Network::getClassName() const
    -      76              :     {
    -      77      3735008 :         return className;
    -      78              :     }
    -      79        70324 :     bool Network::isCyclic(const std::string& nodeId, std::unordered_set<std::string>& visited, std::unordered_set<std::string>& recStack)
    -      80              :     {
    -      81        70324 :         if (visited.find(nodeId) == visited.end()) // if node hasn't been visited yet
    -      82              :         {
    -      83        70324 :             visited.insert(nodeId);
    -      84        70324 :             recStack.insert(nodeId);
    -      85        81496 :             for (Node* child : nodes[nodeId]->getChildren()) {
    -      86        11196 :                 if (visited.find(child->getName()) == visited.end() && isCyclic(child->getName(), visited, recStack))
    -      87           24 :                     return true;
    -      88        11180 :                 if (recStack.find(child->getName()) != recStack.end())
    -      89            8 :                     return true;
    -      90              :             }
    -      91              :         }
    -      92        70300 :         recStack.erase(nodeId); // remove node from recursion stack before function ends
    -      93        70300 :         return false;
    -      94              :     }
    -      95        59152 :     void Network::addEdge(const std::string& parent, const std::string& child)
    -      96              :     {
    -      97        59152 :         if (nodes.find(parent) == nodes.end()) {
    -      98            8 :             throw std::invalid_argument("Parent node " + parent + " does not exist");
    -      99              :         }
    -     100        59144 :         if (nodes.find(child) == nodes.end()) {
    -     101            8 :             throw std::invalid_argument("Child node " + child + " does not exist");
    -     102              :         }
    -     103              :         // Temporarily add edge to check for cycles
    -     104        59136 :         nodes[parent]->addChild(nodes[child].get());
    -     105        59136 :         nodes[child]->addParent(nodes[parent].get());
    -     106        59136 :         std::unordered_set<std::string> visited;
    -     107        59136 :         std::unordered_set<std::string> recStack;
    -     108        59136 :         if (isCyclic(nodes[child]->getName(), visited, recStack)) // if adding this edge forms a cycle
    -     109              :         {
    -     110              :             // remove problematic edge
    -     111            8 :             nodes[parent]->removeChild(nodes[child].get());
    -     112            8 :             nodes[child]->removeParent(nodes[parent].get());
    -     113            8 :             throw std::invalid_argument("Adding this edge forms a cycle in the graph.");
    -     114              :         }
    -     115        59144 :     }
    -     116      3735276 :     std::map<std::string, std::unique_ptr<Node>>& Network::getNodes()
    -     117              :     {
    -     118      3735276 :         return nodes;
    -     119              :     }
    -     120         1888 :     void Network::checkFitData(int n_samples, int n_features, int n_samples_y, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -     121              :     {
    -     122         1888 :         if (weights.size(0) != n_samples) {
    -     123            8 :             throw std::invalid_argument("Weights (" + std::to_string(weights.size(0)) + ") must have the same number of elements as samples (" + std::to_string(n_samples) + ") in Network::fit");
    -     124              :         }
    -     125         1880 :         if (n_samples != n_samples_y) {
    -     126            8 :             throw std::invalid_argument("X and y must have the same number of samples in Network::fit (" + std::to_string(n_samples) + " != " + std::to_string(n_samples_y) + ")");
    -     127              :         }
    -     128         1872 :         if (n_features != featureNames.size()) {
    -     129            8 :             throw std::invalid_argument("X and features must have the same number of features in Network::fit (" + std::to_string(n_features) + " != " + std::to_string(featureNames.size()) + ")");
    -     130              :         }
    -     131         1864 :         if (features.size() == 0) {
    -     132            8 :             throw std::invalid_argument("The network has not been initialized. You must call addNode() before calling fit()");
    -     133              :         }
    -     134         1856 :         if (n_features != features.size() - 1) {
    -     135            8 :             throw std::invalid_argument("X and local features must have the same number of features in Network::fit (" + std::to_string(n_features) + " != " + std::to_string(features.size() - 1) + ")");
    -     136              :         }
    -     137         1848 :         if (find(features.begin(), features.end(), className) == features.end()) {
    -     138            8 :             throw std::invalid_argument("Class Name not found in Network::features");
    -     139              :         }
    -     140        32868 :         for (auto& feature : featureNames) {
    -     141        31044 :             if (find(features.begin(), features.end(), feature) == features.end()) {
    -     142            8 :                 throw std::invalid_argument("Feature " + feature + " not found in Network::features");
    -     143              :             }
    -     144        31036 :             if (states.find(feature) == states.end()) {
    -     145            8 :                 throw std::invalid_argument("Feature " + feature + " not found in states");
    -     146              :             }
    -     147              :         }
    -     148         1824 :     }
    -     149         1824 :     void Network::setStates(const std::map<std::string, std::vector<int>>& states)
    -     150              :     {
    -     151              :         // Set states to every Node in the network
    -     152         1824 :         for_each(features.begin(), features.end(), [this, &states](const std::string& feature) {
    -     153        32828 :             nodes.at(feature)->setNumStates(states.at(feature).size());
    -     154        32828 :             });
    -     155         1824 :         classNumStates = nodes.at(className)->getNumStates();
    -     156         1824 :     }
    -     157              :     // X comes in nxm, where n is the number of features and m the number of samples
    -     158            4 :     void Network::fit(const torch::Tensor& X, const torch::Tensor& y, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -     159              :     {
    -     160            4 :         checkFitData(X.size(1), X.size(0), y.size(0), featureNames, className, states, weights);
    -     161            4 :         this->className = className;
    -     162            4 :         torch::Tensor ytmp = torch::transpose(y.view({ y.size(0), 1 }), 0, 1);
    -     163           12 :         samples = torch::cat({ X , ytmp }, 0);
    -     164           20 :         for (int i = 0; i < featureNames.size(); ++i) {
    -     165           48 :             auto row_feature = X.index({ i, "..." });
    -     166           16 :         }
    -     167            4 :         completeFit(states, weights);
    -     168           24 :     }
    -     169         1792 :     void Network::fit(const torch::Tensor& samples, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -     170              :     {
    -     171         1792 :         checkFitData(samples.size(1), samples.size(0) - 1, samples.size(1), featureNames, className, states, weights);
    -     172         1792 :         this->className = className;
    -     173         1792 :         this->samples = samples;
    -     174         1792 :         completeFit(states, weights);
    -     175         1792 :     }
    -     176              :     // input_data comes in nxm, where n is the number of features and m the number of samples
    -     177           92 :     void Network::fit(const std::vector<std::vector<int>>& input_data, const std::vector<int>& labels, const std::vector<double>& weights_, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states)
    -     178              :     {
    -     179           92 :         const torch::Tensor weights = torch::tensor(weights_, torch::kFloat64);
    -     180           92 :         checkFitData(input_data[0].size(), input_data.size(), labels.size(), featureNames, className, states, weights);
    -     181           28 :         this->className = className;
    -     182              :         // Build tensor of samples (nxm) (n+1 because of the class)
    -     183           28 :         samples = torch::zeros({ static_cast<int>(input_data.size() + 1), static_cast<int>(input_data[0].size()) }, torch::kInt32);
    -     184          140 :         for (int i = 0; i < featureNames.size(); ++i) {
    -     185          448 :             samples.index_put_({ i, "..." }, torch::tensor(input_data[i], torch::kInt32));
    -     186              :         }
    -     187          112 :         samples.index_put_({ -1, "..." }, torch::tensor(labels, torch::kInt32));
    -     188           28 :         completeFit(states, weights);
    -     189          232 :     }
    -     190         1824 :     void Network::completeFit(const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights)
    -     191              :     {
    -     192         1824 :         setStates(states);
    -     193         1824 :         laplaceSmoothing = 1.0 / samples.size(1); // To use in CPT computation
    -     194         1824 :         std::vector<std::thread> threads;
    -     195        34652 :         for (auto& node : nodes) {
    -     196        32828 :             threads.emplace_back([this, &node, &weights]() {
    -     197        32828 :                 node.second->computeCPT(samples, features, laplaceSmoothing, weights);
    -     198        32828 :                 });
    -     199              :         }
    -     200        34652 :         for (auto& thread : threads) {
    -     201        32828 :             thread.join();
    -     202              :         }
    -     203         1824 :         fitted = true;
    -     204         1824 :     }
    -     205         3320 :     torch::Tensor Network::predict_tensor(const torch::Tensor& samples, const bool proba)
    -     206              :     {
    -     207         3320 :         if (!fitted) {
    -     208            8 :             throw std::logic_error("You must call fit() before calling predict()");
    -     209              :         }
    -     210         3312 :         torch::Tensor result;
    -     211         3312 :         result = torch::zeros({ samples.size(1), classNumStates }, torch::kFloat64);
    -     212       785016 :         for (int i = 0; i < samples.size(1); ++i) {
    -     213      2345136 :             const torch::Tensor sample = samples.index({ "...", i });
    -     214       781712 :             auto psample = predict_sample(sample);
    -     215       781704 :             auto temp = torch::tensor(psample, torch::kFloat64);
    -     216              :             //            result.index_put_({ i, "..." }, torch::tensor(predict_sample(sample), torch::kFloat64));
    -     217      2345112 :             result.index_put_({ i, "..." }, temp);
    -     218       781712 :         }
    -     219         3304 :         if (proba)
    -     220         1476 :             return result;
    -     221         3656 :         return result.argmax(1);
    -     222      1566728 :     }
    -     223              :     // Return mxn tensor of probabilities
    -     224         1476 :     torch::Tensor Network::predict_proba(const torch::Tensor& samples)
    -     225              :     {
    -     226         1476 :         return predict_tensor(samples, true);
    -     227              :     }
    -     228              : 
    -     229              :     // Return mxn tensor of probabilities
    -     230         1844 :     torch::Tensor Network::predict(const torch::Tensor& samples)
    -     231              :     {
    -     232         1844 :         return predict_tensor(samples, false);
    -     233              :     }
    -     234              : 
    -     235              :     // Return mx1 std::vector of predictions
    -     236              :     // tsamples is nxm std::vector of samples
    -     237           48 :     std::vector<int> Network::predict(const std::vector<std::vector<int>>& tsamples)
    -     238              :     {
    -     239           48 :         if (!fitted) {
    -     240           16 :             throw std::logic_error("You must call fit() before calling predict()");
    -     241              :         }
    -     242           32 :         std::vector<int> predictions;
    -     243           32 :         std::vector<int> sample;
    -     244         3564 :         for (int row = 0; row < tsamples[0].size(); ++row) {
    -     245         3540 :             sample.clear();
    -     246        26252 :             for (int col = 0; col < tsamples.size(); ++col) {
    -     247        22712 :                 sample.push_back(tsamples[col][row]);
    -     248              :             }
    -     249         3540 :             std::vector<double> classProbabilities = predict_sample(sample);
    -     250              :             // Find the class with the maximum posterior probability
    -     251         3532 :             auto maxElem = max_element(classProbabilities.begin(), classProbabilities.end());
    -     252         3532 :             int predictedClass = distance(classProbabilities.begin(), maxElem);
    -     253         3532 :             predictions.push_back(predictedClass);
    -     254         3532 :         }
    -     255           48 :         return predictions;
    -     256           40 :     }
    -     257              :     // Return mxn std::vector of probabilities
    -     258              :     // tsamples is nxm std::vector of samples
    -     259          552 :     std::vector<std::vector<double>> Network::predict_proba(const std::vector<std::vector<int>>& tsamples)
    -     260              :     {
    -     261          552 :         if (!fitted) {
    -     262            8 :             throw std::logic_error("You must call fit() before calling predict_proba()");
    -     263              :         }
    -     264          544 :         std::vector<std::vector<double>> predictions;
    -     265          544 :         std::vector<int> sample;
    -     266       111516 :         for (int row = 0; row < tsamples[0].size(); ++row) {
    -     267       110972 :             sample.clear();
    -     268      1055620 :             for (int col = 0; col < tsamples.size(); ++col) {
    -     269       944648 :                 sample.push_back(tsamples[col][row]);
    -     270              :             }
    -     271       110972 :             predictions.push_back(predict_sample(sample));
    -     272              :         }
    -     273         1088 :         return predictions;
    -     274          544 :     }
    -     275           20 :     double Network::score(const std::vector<std::vector<int>>& tsamples, const std::vector<int>& labels)
    -     276              :     {
    -     277           20 :         std::vector<int> y_pred = predict(tsamples);
    -     278           12 :         int correct = 0;
    -     279         2324 :         for (int i = 0; i < y_pred.size(); ++i) {
    -     280         2312 :             if (y_pred[i] == labels[i]) {
    -     281         1944 :                 correct++;
    -     282              :             }
    -     283              :         }
    -     284           24 :         return (double)correct / y_pred.size();
    -     285           12 :     }
    -     286              :     // Return 1xn std::vector of probabilities
    -     287       114512 :     std::vector<double> Network::predict_sample(const std::vector<int>& sample)
    -     288              :     {
    -     289              :         // Ensure the sample size is equal to the number of features
    -     290       114512 :         if (sample.size() != features.size() - 1) {
    -     291           16 :             throw std::invalid_argument("Sample size (" + std::to_string(sample.size()) +
    -     292           24 :                 ") does not match the number of features (" + std::to_string(features.size() - 1) + ")");
    -     293              :         }
    -     294       114504 :         std::map<std::string, int> evidence;
    -     295      1081840 :         for (int i = 0; i < sample.size(); ++i) {
    -     296       967336 :             evidence[features[i]] = sample[i];
    -     297              :         }
    -     298       229008 :         return exactInference(evidence);
    -     299       114504 :     }
    -     300              :     // Return 1xn std::vector of probabilities
    -     301       781712 :     std::vector<double> Network::predict_sample(const torch::Tensor& sample)
    -     302              :     {
    -     303              :         // Ensure the sample size is equal to the number of features
    -     304       781712 :         if (sample.size(0) != features.size() - 1) {
    -     305           16 :             throw std::invalid_argument("Sample size (" + std::to_string(sample.size(0)) +
    -     306           24 :                 ") does not match the number of features (" + std::to_string(features.size() - 1) + ")");
    -     307              :         }
    -     308       781704 :         std::map<std::string, int> evidence;
    -     309     18085136 :         for (int i = 0; i < sample.size(0); ++i) {
    -     310     17303432 :             evidence[features[i]] = sample[i].item<int>();
    -     311              :         }
    -     312      1563408 :         return exactInference(evidence);
    -     313       781704 :     }
    -     314      3734984 :     double Network::computeFactor(std::map<std::string, int>& completeEvidence)
    -     315              :     {
    -     316      3734984 :         double result = 1.0;
    -     317     72886736 :         for (auto& node : getNodes()) {
    -     318     69151752 :             result *= node.second->getFactorValue(completeEvidence);
    -     319              :         }
    -     320      3734984 :         return result;
    -     321              :     }
    -     322       896208 :     std::vector<double> Network::exactInference(std::map<std::string, int>& evidence)
    -     323              :     {
    -     324       896208 :         std::vector<double> result(classNumStates, 0.0);
    -     325       896208 :         std::vector<std::thread> threads;
    -     326       896208 :         std::mutex mtx;
    -     327      4631192 :         for (int i = 0; i < classNumStates; ++i) {
    -     328      3734984 :             threads.emplace_back([this, &result, &evidence, i, &mtx]() {
    -     329      3734984 :                 auto completeEvidence = std::map<std::string, int>(evidence);
    -     330      3734984 :                 completeEvidence[getClassName()] = i;
    -     331      3734984 :                 double factor = computeFactor(completeEvidence);
    -     332      3734984 :                 std::lock_guard<std::mutex> lock(mtx);
    -     333      3734984 :                 result[i] = factor;
    -     334      3734984 :                 });
    -     335              :         }
    -     336      4631192 :         for (auto& thread : threads) {
    -     337      3734984 :             thread.join();
    -     338              :         }
    -     339              :         // Normalize result
    -     340       896208 :         double sum = accumulate(result.begin(), result.end(), 0.0);
    -     341      4631192 :         transform(result.begin(), result.end(), result.begin(), [sum](const double& value) { return value / sum; });
    -     342      1792416 :         return result;
    -     343       896208 :     }
    -     344           28 :     std::vector<std::string> Network::show() const
    -     345              :     {
    -     346           28 :         std::vector<std::string> result;
    -     347              :         // Draw the network
    -     348          160 :         for (auto& node : nodes) {
    -     349          132 :             std::string line = node.first + " -> ";
    -     350          308 :             for (auto child : node.second->getChildren()) {
    -     351          176 :                 line += child->getName() + ", ";
    -     352              :             }
    -     353          132 :             result.push_back(line);
    -     354          132 :         }
    -     355           56 :         return result;
    -     356           28 :     }
    -     357          112 :     std::vector<std::string> Network::graph(const std::string& title) const
    -     358              :     {
    -     359          112 :         auto output = std::vector<std::string>();
    -     360          112 :         auto prefix = "digraph BayesNet {\nlabel=<BayesNet ";
    -     361          112 :         auto suffix = ">\nfontsize=30\nfontcolor=blue\nlabelloc=t\nlayout=circo\n";
    -     362          112 :         std::string header = prefix + title + suffix;
    -     363          112 :         output.push_back(header);
    -     364          844 :         for (auto& node : nodes) {
    -     365          732 :             auto result = node.second->graph(className);
    -     366          732 :             output.insert(output.end(), result.begin(), result.end());
    -     367          732 :         }
    -     368          112 :         output.push_back("}\n");
    -     369          224 :         return output;
    -     370          112 :     }
    -     371          408 :     std::vector<std::pair<std::string, std::string>> Network::getEdges() const
    -     372              :     {
    -     373          408 :         auto edges = std::vector<std::pair<std::string, std::string>>();
    -     374         7396 :         for (const auto& node : nodes) {
    -     375         6988 :             auto head = node.first;
    -     376        20312 :             for (const auto& child : node.second->getChildren()) {
    -     377        13324 :                 auto tail = child->getName();
    -     378        13324 :                 edges.push_back({ head, tail });
    -     379        13324 :             }
    -     380         6988 :         }
    -     381          816 :         return edges;
    -     382          408 :     }
    -     383          364 :     int Network::getNumEdges() const
    -     384              :     {
    -     385          364 :         return getEdges().size();
    -     386              :     }
    -     387          220 :     std::vector<std::string> Network::topological_sort()
    -     388              :     {
    -     389              :         /* Check if al the fathers of every node are before the node */
    -     390          220 :         auto result = features;
    -     391          220 :         result.erase(remove(result.begin(), result.end(), className), result.end());
    -     392          220 :         bool ending{ false };
    -     393          628 :         while (!ending) {
    -     394          408 :             ending = true;
    -     395         3804 :             for (auto feature : features) {
    -     396         3396 :                 auto fathers = nodes[feature]->getParents();
    -     397         9000 :                 for (const auto& father : fathers) {
    -     398         5604 :                     auto fatherName = father->getName();
    -     399         5604 :                     if (fatherName == className) {
    -     400         2980 :                         continue;
    -     401              :                     }
    -     402              :                     // Check if father is placed before the actual feature
    -     403         2624 :                     auto it = find(result.begin(), result.end(), fatherName);
    -     404         2624 :                     if (it != result.end()) {
    -     405         2624 :                         auto it2 = find(result.begin(), result.end(), feature);
    -     406         2624 :                         if (it2 != result.end()) {
    -     407         5248 :                             if (distance(it, it2) < 0) {
    -     408              :                                 // if it is not, insert it before the feature
    -     409          244 :                                 result.erase(remove(result.begin(), result.end(), fatherName), result.end());
    -     410          244 :                                 result.insert(it2, fatherName);
    -     411          244 :                                 ending = false;
    -     412              :                             }
    -     413              :                         }
    -     414              :                     }
    -     415         5604 :                 }
    -     416         3396 :             }
    -     417              :         }
    -     418          440 :         return result;
    -     419          220 :     }
    -     420            8 :     std::string Network::dump_cpt() const
    -     421              :     {
    -     422            8 :         std::stringstream oss;
    -     423           48 :         for (auto& node : nodes) {
    -     424           40 :             oss << "* " << node.first << ": (" << node.second->getNumStates() << ") : " << node.second->getCPT().sizes() << std::endl;
    -     425           40 :             oss << node.second->getCPT() << std::endl;
    -     426              :         }
    -     427           16 :         return oss.str();
    -     428            8 :     }
    -     429              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.cc.gcov.overview.html b/html/bayesnet/network/Network.cc.gcov.overview.html deleted file mode 100644 index 96bc96f..0000000 --- a/html/bayesnet/network/Network.cc.gcov.overview.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/network/Network.cc.gcov.png b/html/bayesnet/network/Network.cc.gcov.png deleted file mode 100644 index 9bc84fb5dd77f24063d419a8e099f69cdb3f9dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmV;02YUF4P)t_5&^kBVJC0vrZ_n_@WM;~+xC_gIqoMrbZcGn<8V z0tPI6D{*?jh&{qW)p2{|8${1<&UC#9QfGm*-ec17?YNTa3W6&-R^6sr#BFOv`1ath zoFFv^Qgx;(Owd3TBRN+k;-{}peCje2iYQ$;N^vd8T#GOJtx~W{ahKFq^_Fe8Y>C<9 zeEAy^dnu#oyMx586lWsKAhBo0b4`g^1Q0abzBDP=mKUR?p)A@~4lJG9(np;PTyug) zxiJlFS=hTgX50&xK(zEGK+T}7QaTo@WV1!a#8U+Hq*2M(6-IpXjn09|0Xk-uT?>n) z1eiH0kW^L@9GxVj4+VgxVH#7A`yK{>>V#g2Khn(GxJ)h#2Y|8jkC%okGga5m_Kjz; zhnGm3VGn5h0!8GZ*u$1CzPZZRQoK;t2d?XHaQ)U^gloz8J*^ba?vr4j&;a+BMiLzi zG~Kx#?Xs=is}$=DWpD^ZR{O<=UAmP}=m76rI#Bl<1}XGzAv#R03A&`}XZd8(QW1@> zKxAJn5>nYK6ZmSTpeJ!YF#_((5$dEN*WpNUF4gE)XDU+QtfA2NXM@T{6BzmW4F}dd zu%w7uKsD!NUd&h#a+C*4w)yoNfjkF+?=vK#vUZV(Q=7%6Gffo3dC!T@a7#sFxMwP4 zWU)t4l*a|zDs)R$f9bo#L)M3_5^N5TRY?iSk)trQlEtEOWM(hwopz6Y3*hK9C~#o2 zQ=m4Jn3n=a)T^exPMa!(e5L_J^6e}g`b;e*yv*=v=Msy_jCAN+yFh>*_;OQLwU|<} z?m9XSI2Zy-W~&nzpfz4-FHJlZc<+S0?yA_M&yHl~zNJe#SOJ3#r0re1Mz5cf=4_;8 z22@31YnfA<5S_Uz4lGdu$+FuH+Gk!h+t{Nck7WiK^=c<5fxNKy41@ti@CJ=1AmN)R zRj@MkV@G&P$2z1P;Lb3fjUQa8a9}76^Ez}Gq?9!%n@D|*dv=gRw(t#R0$1rgu3^~Y zIeF5>4mVs72 zW)~u|`I>&Y=GvhNVz4l*0Nm+yWT0WStm1T^eAM|)Es0p|p(vVQFSU>u*LFd+8ywF7 zJZ7S&q$|xFL|m3kE%3k#mEe@Bew`Oeb|%Lz|E(9wO9Ow-!np~$J$s#K9yDjIuh1;N zn659#nxZaUZRINGxRb*arR&wwA348n6*W~T&eC@WDK{g?k69hDa)woBbw12%HO{r} zNiKg}bRTSA@}#S)u;nf`o@LO}XogisBVfQDJI%qo=`aAKfudhOWIZLaf7p6vXJ^0H zdeCO?k@Xn;{IK;n^G;$(jA!Gg_Be~pW)e4u^}J)(*-gseNRBID{OO0mCXtQ{PG+R4 zB_0FQYV=tUdk;#6Eu41B5;!m*A0%^UXiH3nso)lI+|)di7?p)i92Y>GOzr-yIc^(3 zc+YRSb&u=_`;<|grZ@=pj^Y8o4|rkfre;Ufhh8|@ETuSH%zMucAdu?J%N_Mo&a6X1 z;|V;Zaxd&n6xibZ8y(WjXMR33C!XuDeNl`zY7{o?_|FzHr)F-DxE_ZT_0{c>#`=hE zw6b0}WhP>e-Y#7rUtPU-;L)671^k%xkj1dKa(7}qcC^;S+JQAI%#_14Lxt32X--pb z0VGhL`MAdg1Z*7S(s=;f3@O1#apU8mlS1o^qAai{Uii&urrjdm#XV^Fd9`j&dZIhu zJy`|N+k9V^N*puBd9<@|5Pb?XZE{()|FFfEfNapaIzrK|Q?57^zyt>wP@Emg|? zh>Zj5V+WWVf*e@O*E!eMweXpKRnwrC-tCv}UN9q{iD7T3nDHOa^q3L#CbuD!K - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Network::~Network()4024
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.h.func.html b/html/bayesnet/network/Network.h.func.html deleted file mode 100644 index 755cf34..0000000 --- a/html/bayesnet/network/Network.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Network::~Network()4024
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.h.gcov.frameset.html b/html/bayesnet/network/Network.h.gcov.frameset.html deleted file mode 100644 index 6fe326f..0000000 --- a/html/bayesnet/network/Network.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/network/Network.h.gcov.html b/html/bayesnet/network/Network.h.gcov.html deleted file mode 100644 index ac9673f..0000000 --- a/html/bayesnet/network/Network.h.gcov.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Network.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef NETWORK_H
    -       8              : #define NETWORK_H
    -       9              : #include <map>
    -      10              : #include <vector>
    -      11              : #include "bayesnet/config.h"
    -      12              : #include "Node.h"
    -      13              : 
    -      14              : namespace bayesnet {
    -      15              :     class Network {
    -      16              :     public:
    -      17              :         Network();
    -      18              :         explicit Network(float);
    -      19              :         explicit Network(const Network&);
    -      20         4024 :         ~Network() = default;
    -      21              :         torch::Tensor& getSamples();
    -      22              :         float getMaxThreads() const;
    -      23              :         void addNode(const std::string&);
    -      24              :         void addEdge(const std::string&, const std::string&);
    -      25              :         std::map<std::string, std::unique_ptr<Node>>& getNodes();
    -      26              :         std::vector<std::string> getFeatures() const;
    -      27              :         int getStates() const;
    -      28              :         std::vector<std::pair<std::string, std::string>> getEdges() const;
    -      29              :         int getNumEdges() const;
    -      30              :         int getClassNumStates() const;
    -      31              :         std::string getClassName() const;
    -      32              :         /*
    -      33              :         Notice: Nodes have to be inserted in the same order as they are in the dataset, i.e., first node is first column and so on.
    -      34              :         */
    -      35              :         void fit(const std::vector<std::vector<int>>& input_data, const std::vector<int>& labels, const std::vector<double>& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -      36              :         void fit(const torch::Tensor& X, const torch::Tensor& y, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -      37              :         void fit(const torch::Tensor& samples, const torch::Tensor& weights, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states);
    -      38              :         std::vector<int> predict(const std::vector<std::vector<int>>&); // Return mx1 std::vector of predictions
    -      39              :         torch::Tensor predict(const torch::Tensor&); // Return mx1 tensor of predictions
    -      40              :         torch::Tensor predict_tensor(const torch::Tensor& samples, const bool proba);
    -      41              :         std::vector<std::vector<double>> predict_proba(const std::vector<std::vector<int>>&); // Return mxn std::vector of probabilities
    -      42              :         torch::Tensor predict_proba(const torch::Tensor&); // Return mxn tensor of probabilities
    -      43              :         double score(const std::vector<std::vector<int>>&, const std::vector<int>&);
    -      44              :         std::vector<std::string> topological_sort();
    -      45              :         std::vector<std::string> show() const;
    -      46              :         std::vector<std::string> graph(const std::string& title) const; // Returns a std::vector of std::strings representing the graph in graphviz format
    -      47              :         void initialize();
    -      48              :         std::string dump_cpt() const;
    -      49              :         inline std::string version() { return  { project_version.begin(), project_version.end() }; }
    -      50              :     private:
    -      51              :         std::map<std::string, std::unique_ptr<Node>> nodes;
    -      52              :         bool fitted;
    -      53              :         float maxThreads = 0.95;
    -      54              :         int classNumStates;
    -      55              :         std::vector<std::string> features; // Including classname
    -      56              :         std::string className;
    -      57              :         double laplaceSmoothing;
    -      58              :         torch::Tensor samples; // n+1xm tensor used to fit the model
    -      59              :         bool isCyclic(const std::string&, std::unordered_set<std::string>&, std::unordered_set<std::string>&);
    -      60              :         std::vector<double> predict_sample(const std::vector<int>&);
    -      61              :         std::vector<double> predict_sample(const torch::Tensor&);
    -      62              :         std::vector<double> exactInference(std::map<std::string, int>&);
    -      63              :         double computeFactor(std::map<std::string, int>&);
    -      64              :         void completeFit(const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -      65              :         void checkFitData(int n_features, int n_samples, int n_samples_y, const std::vector<std::string>& featureNames, const std::string& className, const std::map<std::string, std::vector<int>>& states, const torch::Tensor& weights);
    -      66              :         void setStates(const std::map<std::string, std::vector<int>>&);
    -      67              :     };
    -      68              : }
    -      69              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Network.h.gcov.overview.html b/html/bayesnet/network/Network.h.gcov.overview.html deleted file mode 100644 index bdda93e..0000000 --- a/html/bayesnet/network/Network.h.gcov.overview.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Network.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/network/Network.h.gcov.png b/html/bayesnet/network/Network.h.gcov.png deleted file mode 100644 index f815125982c91b9b2e01d7fe832f0292ddaea0cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)&DK@xsRu)ID^eHV@cf*u9R+K$H*5a@#Siu?c#5XI)u zlt=9QH^5blY2&!(oPPlCFjLe`PuAmJV%lTcxO@c?(AETd?iT^3YbsNe1;VtPXSMHb z*Htf{b7lirp>&%7i5h#0Z^|emTx81vVYWq{F1yAUD4hlY@aAoO+!0mT7uz|s{j?Yw z)>tJtmhk}B5|l@5KR`NY^$PUpzO}z^J%a3AU72SQ08!SuuS1~j3;H|KQ)~~37@$ZX zs#{AzY4RJ=1H&LtQyZLGg&rez20|!fX!q31p=yBhR`VXA#|k=+FlF-|-Rm?43P!lW zpx>p9EW_!<$Vm}IL7XX%kCNR>ag4`wj4T{`z - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Node.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Node.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %8888
    Test Date:2024-05-06 17:54:04Functions:100.0 %2020
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Node::clear()9
    bayesnet::Node::removeChild(bayesnet::Node*)17
    bayesnet::Node::removeParent(bayesnet::Node*)17
    bayesnet::Node::combinations(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)45
    bayesnet::Node::minFill()45
    bayesnet::Node::getCPT()429
    bayesnet::Node::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)732
    auto bayesnet::Node::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const1108
    bayesnet::Node::getParents()5087
    bayesnet::Node::Node(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)31339
    bayesnet::Node::setNumStates(int)32864
    bayesnet::Node::computeCPT(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, double, at::Tensor const&)32894
    bayesnet::Node::addChild(bayesnet::Node*)59235
    bayesnet::Node::addParent(bayesnet::Node*)59262
    auto bayesnet::Node::computeCPT(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, double, at::Tensor const&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const62020
    bayesnet::Node::getNumStates() const64124
    bayesnet::Node::getChildren()77571
    bayesnet::Node::getFactorValue(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)69151761
    auto bayesnet::Node::getFactorValue(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const129301512
    bayesnet::Node::getName[abi:cxx11]() const150429643
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Node.cc.func.html b/html/bayesnet/network/Node.cc.func.html deleted file mode 100644 index d8e7bd8..0000000 --- a/html/bayesnet/network/Node.cc.func.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Node.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Node.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %8888
    Test Date:2024-05-06 17:54:04Functions:100.0 %2020
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    auto bayesnet::Node::computeCPT(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, double, at::Tensor const&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const62020
    auto bayesnet::Node::getFactorValue(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const129301512
    auto bayesnet::Node::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1 const&)#1}::operator()<bayesnet::Node*>(bayesnet::Node* const&) const1108
    bayesnet::Node::Node(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)31339
    bayesnet::Node::addChild(bayesnet::Node*)59235
    bayesnet::Node::addParent(bayesnet::Node*)59262
    bayesnet::Node::clear()9
    bayesnet::Node::combinations(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)45
    bayesnet::Node::computeCPT(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, double, at::Tensor const&)32894
    bayesnet::Node::getCPT()429
    bayesnet::Node::getChildren()77571
    bayesnet::Node::getFactorValue(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > >&)69151761
    bayesnet::Node::getName[abi:cxx11]() const150429643
    bayesnet::Node::getNumStates() const64124
    bayesnet::Node::getParents()5087
    bayesnet::Node::graph(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)732
    bayesnet::Node::minFill()45
    bayesnet::Node::removeChild(bayesnet::Node*)17
    bayesnet::Node::removeParent(bayesnet::Node*)17
    bayesnet::Node::setNumStates(int)32864
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Node.cc.gcov.frameset.html b/html/bayesnet/network/Node.cc.gcov.frameset.html deleted file mode 100644 index 48cc9aa..0000000 --- a/html/bayesnet/network/Node.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Node.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/network/Node.cc.gcov.html b/html/bayesnet/network/Node.cc.gcov.html deleted file mode 100644 index 84aebe5..0000000 --- a/html/bayesnet/network/Node.cc.gcov.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Node.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/network - Node.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %8888
    Test Date:2024-05-06 17:54:04Functions:100.0 %2020
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "Node.h"
    -       8              : 
    -       9              : namespace bayesnet {
    -      10              : 
    -      11        31339 :     Node::Node(const std::string& name)
    -      12        31339 :         : name(name)
    -      13              :     {
    -      14        31339 :     }
    -      15            9 :     void Node::clear()
    -      16              :     {
    -      17            9 :         parents.clear();
    -      18            9 :         children.clear();
    -      19            9 :         cpTable = torch::Tensor();
    -      20            9 :         dimensions.clear();
    -      21            9 :         numStates = 0;
    -      22            9 :     }
    -      23    150429643 :     std::string Node::getName() const
    -      24              :     {
    -      25    150429643 :         return name;
    -      26              :     }
    -      27        59262 :     void Node::addParent(Node* parent)
    -      28              :     {
    -      29        59262 :         parents.push_back(parent);
    -      30        59262 :     }
    -      31           17 :     void Node::removeParent(Node* parent)
    -      32              :     {
    -      33           17 :         parents.erase(std::remove(parents.begin(), parents.end(), parent), parents.end());
    -      34           17 :     }
    -      35           17 :     void Node::removeChild(Node* child)
    -      36              :     {
    -      37           17 :         children.erase(std::remove(children.begin(), children.end(), child), children.end());
    -      38           17 :     }
    -      39        59235 :     void Node::addChild(Node* child)
    -      40              :     {
    -      41        59235 :         children.push_back(child);
    -      42        59235 :     }
    -      43         5087 :     std::vector<Node*>& Node::getParents()
    -      44              :     {
    -      45         5087 :         return parents;
    -      46              :     }
    -      47        77571 :     std::vector<Node*>& Node::getChildren()
    -      48              :     {
    -      49        77571 :         return children;
    -      50              :     }
    -      51        64124 :     int Node::getNumStates() const
    -      52              :     {
    -      53        64124 :         return numStates;
    -      54              :     }
    -      55        32864 :     void Node::setNumStates(int numStates)
    -      56              :     {
    -      57        32864 :         this->numStates = numStates;
    -      58        32864 :     }
    -      59          429 :     torch::Tensor& Node::getCPT()
    -      60              :     {
    -      61          429 :         return cpTable;
    -      62              :     }
    -      63              :     /*
    -      64              :      The MinFill criterion is a heuristic for variable elimination.
    -      65              :      The variable that minimizes the number of edges that need to be added to the graph to make it triangulated.
    -      66              :      This is done by counting the number of edges that need to be added to the graph if the variable is eliminated.
    -      67              :      The variable with the minimum number of edges is chosen.
    -      68              :      Here this is done computing the length of the combinations of the node neighbors taken 2 by 2.
    -      69              :     */
    -      70           45 :     unsigned Node::minFill()
    -      71              :     {
    -      72           45 :         std::unordered_set<std::string> neighbors;
    -      73          117 :         for (auto child : children) {
    -      74           72 :             neighbors.emplace(child->getName());
    -      75              :         }
    -      76          108 :         for (auto parent : parents) {
    -      77           63 :             neighbors.emplace(parent->getName());
    -      78              :         }
    -      79           45 :         auto source = std::vector<std::string>(neighbors.begin(), neighbors.end());
    -      80           90 :         return combinations(source).size();
    -      81           45 :     }
    -      82           45 :     std::vector<std::pair<std::string, std::string>> Node::combinations(const std::vector<std::string>& source)
    -      83              :     {
    -      84           45 :         std::vector<std::pair<std::string, std::string>> result;
    -      85          180 :         for (int i = 0; i < source.size(); ++i) {
    -      86          135 :             std::string temp = source[i];
    -      87          279 :             for (int j = i + 1; j < source.size(); ++j) {
    -      88          144 :                 result.push_back({ temp, source[j] });
    -      89              :             }
    -      90          135 :         }
    -      91           90 :         return result;
    -      92           45 :     }
    -      93        32894 :     void Node::computeCPT(const torch::Tensor& dataset, const std::vector<std::string>& features, const double laplaceSmoothing, const torch::Tensor& weights)
    -      94              :     {
    -      95        32894 :         dimensions.clear();
    -      96              :         // Get dimensions of the CPT
    -      97        32894 :         dimensions.push_back(numStates);
    -      98        94914 :         transform(parents.begin(), parents.end(), back_inserter(dimensions), [](const auto& parent) { return parent->getNumStates(); });
    -      99              :         // Create a tensor of zeros with the dimensions of the CPT
    -     100        32894 :         cpTable = torch::zeros(dimensions, torch::kFloat) + laplaceSmoothing;
    -     101              :         // Fill table with counts
    -     102        32894 :         auto pos = find(features.begin(), features.end(), name);
    -     103        32894 :         if (pos == features.end()) {
    -     104            8 :             throw std::logic_error("Feature " + name + " not found in dataset");
    -     105              :         }
    -     106        32886 :         int name_index = pos - features.begin();
    -     107     11221522 :         for (int n_sample = 0; n_sample < dataset.size(1); ++n_sample) {
    -     108     11188649 :             c10::List<c10::optional<at::Tensor>> coordinates;
    -     109     33565947 :             coordinates.push_back(dataset.index({ name_index, n_sample }));
    -     110     32200749 :             for (auto parent : parents) {
    -     111     21012113 :                 pos = find(features.begin(), features.end(), parent->getName());
    -     112     21012113 :                 if (pos == features.end()) {
    -     113           13 :                     throw std::logic_error("Feature parent " + parent->getName() + " not found in dataset");
    -     114              :                 }
    -     115     21012100 :                 int parent_index = pos - features.begin();
    -     116     63036300 :                 coordinates.push_back(dataset.index({ parent_index, n_sample }));
    -     117              :             }
    -     118              :             // Increment the count of the corresponding coordinate
    -     119     22377272 :             cpTable.index_put_({ coordinates }, cpTable.index({ coordinates }) + weights.index({ n_sample }).item<double>());
    -     120     11188649 :         }
    -     121              :         // Normalize the counts
    -     122        32873 :         cpTable = cpTable / cpTable.sum(0);
    -     123     43422258 :     }
    -     124     69151761 :     float Node::getFactorValue(std::map<std::string, int>& evidence)
    -     125              :     {
    -     126     69151761 :         c10::List<c10::optional<at::Tensor>> coordinates;
    -     127              :         // following predetermined order of indices in the cpTable (see Node.h)
    -     128     69151761 :         coordinates.push_back(at::tensor(evidence[name]));
    -     129    198453273 :         transform(parents.begin(), parents.end(), std::back_inserter(coordinates), [&evidence](const auto& parent) { return at::tensor(evidence[parent->getName()]); });
    -     130    138303522 :         return cpTable.index({ coordinates }).item<float>();
    -     131     69151761 :     }
    -     132          732 :     std::vector<std::string> Node::graph(const std::string& className)
    -     133              :     {
    -     134          732 :         auto output = std::vector<std::string>();
    -     135          732 :         auto suffix = name == className ? ", fontcolor=red, fillcolor=lightblue, style=filled " : "";
    -     136          732 :         output.push_back(name + " [shape=circle" + suffix + "] \n");
    -     137         1840 :         transform(children.begin(), children.end(), back_inserter(output), [this](const auto& child) { return name + " -> " + child->getName(); });
    -     138         1464 :         return output;
    -     139          732 :     }
    -     140              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/Node.cc.gcov.overview.html b/html/bayesnet/network/Node.cc.gcov.overview.html deleted file mode 100644 index 59f204f..0000000 --- a/html/bayesnet/network/Node.cc.gcov.overview.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network/Node.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/network/Node.cc.gcov.png b/html/bayesnet/network/Node.cc.gcov.png deleted file mode 100644 index e5942a5a50347c02f60448a797b86826b1ac1422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758 zcmVN`)Bm`wxm9$6=8@^lh#nCRglVAs$C$fpo?5=P+cuE|^rTKUaz-z$-;z=i8n^ zEc+f-^sq${@d36%^dPh13F%Rs^dp7X4fVVq;mf4Rv6iI#hGUVhIVOi%ufE_|A4&?@ zxnAc8{d4`6W3~h7ca7C~r9$?=EqCs*mFw3pb}=tZ{rO&1+|- z+wGR}5xwTQ5NoLneZ@b^$8$~@9Y6LoAkm-~0*`2U_EVD+DTX{0UZdc3N#o&8%kWEz z;YYuMbv~yT126Y9J}E@zASlhmCMFuw%rLD&nhpndO(B#-`@-QILM>*tks?y-N6N}R zqE+rq#Sxa;bOcy1-KtNTP8|^Mu(1@)s-$%79*d<}1gaYoc-e*(X03>qvjOwQ;qG?r zaOBwZ#uE4ZPa3N|M1bM`61@b2$a{k$mL*oT@Q%`F%O^);)PjpOzC^3aY{~<5KdOJm<~)~ z+Et{AC%4K?P;qR9Kg;i%X$8v_E`4=e{hC{jYZXLj?(Cisr*CE1Iz5ulTf`@)D~{3i z`n~ov4iXQI*B%np{db;G - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/index-detail-sort-l.html b/html/bayesnet/network/index-detail-sort-l.html deleted file mode 100644 index b032e99..0000000 --- a/html/bayesnet/network/index-detail-sort-l.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/index-detail.html b/html/bayesnet/network/index-detail.html deleted file mode 100644 index 60f89a2..0000000 --- a/html/bayesnet/network/index-detail.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/index-sort-f.html b/html/bayesnet/network/index-sort-f.html deleted file mode 100644 index f5574a3..0000000 --- a/html/bayesnet/network/index-sort-f.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/index-sort-l.html b/html/bayesnet/network/index-sort-l.html deleted file mode 100644 index b032e99..0000000 --- a/html/bayesnet/network/index-sort-l.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/network/index.html b/html/bayesnet/network/index.html deleted file mode 100644 index 60f89a2..0000000 --- a/html/bayesnet/network/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/network - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/networkCoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %384384
    Test Date:2024-05-06 17:54:04Functions:100.0 %6161
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Network.cc -
    100.0%
    -
    100.0 %295295100.0 %4040
    Network.h -
    100.0%
    -
    100.0 %11100.0 %11
    Node.cc -
    100.0%
    -
    100.0 %8888100.0 %2020
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.func-c.html b/html/bayesnet/utils/BayesMetrics.cc.func-c.html deleted file mode 100644 index 4a62b6f..0000000 --- a/html/bayesnet/utils/BayesMetrics.cc.func-c.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.2 %114112
    Test Date:2024-05-06 17:54:04Functions:100.0 %1111
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Metrics::getScoresKBest() const48
    bayesnet::Metrics::Metrics(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)96
    bayesnet::Metrics::maximumSpanningTree(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, at::Tensor const&, int)148
    bayesnet::Metrics::conditionalEdge(at::Tensor const&)152
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)478
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)::{lambda(int, int)#1}::operator()(int, int) const2088
    bayesnet::Metrics::Metrics(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)2123
    bayesnet::Metrics::conditionalEntropy(at::Tensor const&, at::Tensor const&, at::Tensor const&)34276
    bayesnet::Metrics::mutualInformation(at::Tensor const&, at::Tensor const&, at::Tensor const&)34276
    bayesnet::Metrics::entropy(at::Tensor const&, at::Tensor const&)41732
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)::{lambda(int, int)#2}::operator()(int, int) const64808
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.func.html b/html/bayesnet/utils/BayesMetrics.cc.func.html deleted file mode 100644 index bd8292c..0000000 --- a/html/bayesnet/utils/BayesMetrics.cc.func.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.2 %114112
    Test Date:2024-05-06 17:54:04Functions:100.0 %1111
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Metrics::Metrics(at::Tensor const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)2123
    bayesnet::Metrics::Metrics(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)96
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)478
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)::{lambda(int, int)#1}::operator()(int, int) const2088
    bayesnet::Metrics::SelectKBestWeighted(at::Tensor const&, bool, unsigned int)::{lambda(int, int)#2}::operator()(int, int) const64808
    bayesnet::Metrics::conditionalEdge(at::Tensor const&)152
    bayesnet::Metrics::conditionalEntropy(at::Tensor const&, at::Tensor const&, at::Tensor const&)34276
    bayesnet::Metrics::entropy(at::Tensor const&, at::Tensor const&)41732
    bayesnet::Metrics::getScoresKBest() const48
    bayesnet::Metrics::maximumSpanningTree(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, at::Tensor const&, int)148
    bayesnet::Metrics::mutualInformation(at::Tensor const&, at::Tensor const&, at::Tensor const&)34276
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.gcov.frameset.html b/html/bayesnet/utils/BayesMetrics.cc.gcov.frameset.html deleted file mode 100644 index b487ab4..0000000 --- a/html/bayesnet/utils/BayesMetrics.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.gcov.html b/html/bayesnet/utils/BayesMetrics.cc.gcov.html deleted file mode 100644 index 9c67e25..0000000 --- a/html/bayesnet/utils/BayesMetrics.cc.gcov.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:98.2 %114112
    Test Date:2024-05-06 17:54:04Functions:100.0 %1111
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include "Mst.h"
    -       8              : #include "BayesMetrics.h"
    -       9              : namespace bayesnet {
    -      10              :     //samples is n+1xm tensor used to fit the model
    -      11         2123 :     Metrics::Metrics(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int classNumStates)
    -      12         2123 :         : samples(samples)
    -      13         2123 :         , className(className)
    -      14         2123 :         , features(features)
    -      15         2123 :         , classNumStates(classNumStates)
    -      16              :     {
    -      17         2123 :     }
    -      18              :     //samples is n+1xm std::vector used to fit the model
    -      19           96 :     Metrics::Metrics(const std::vector<std::vector<int>>& vsamples, const std::vector<int>& labels, const std::vector<std::string>& features, const std::string& className, const int classNumStates)
    -      20           96 :         : samples(torch::zeros({ static_cast<int>(vsamples.size() + 1), static_cast<int>(vsamples[0].size()) }, torch::kInt32))
    -      21           96 :         , className(className)
    -      22           96 :         , features(features)
    -      23           96 :         , classNumStates(classNumStates)
    -      24              :     {
    -      25          768 :         for (int i = 0; i < vsamples.size(); ++i) {
    -      26         2688 :             samples.index_put_({ i,  "..." }, torch::tensor(vsamples[i], torch::kInt32));
    -      27              :         }
    -      28          384 :         samples.index_put_({ -1, "..." }, torch::tensor(labels, torch::kInt32));
    -      29          864 :     }
    -      30          478 :     std::vector<int> Metrics::SelectKBestWeighted(const torch::Tensor& weights, bool ascending, unsigned k)
    -      31              :     {
    -      32              :         // Return the K Best features 
    -      33          478 :         auto n = features.size();
    -      34          478 :         if (k == 0) {
    -      35            6 :             k = n;
    -      36              :         }
    -      37              :         // compute scores
    -      38          478 :         scoresKBest.clear();
    -      39          478 :         featuresKBest.clear();
    -      40         1434 :         auto label = samples.index({ -1, "..." });
    -      41        10522 :         for (int i = 0; i < n; ++i) {
    -      42        30132 :             scoresKBest.push_back(mutualInformation(label, samples.index({ i, "..." }), weights));
    -      43        10044 :             featuresKBest.push_back(i);
    -      44              :         }
    -      45              :         // sort & reduce scores and features
    -      46          478 :         if (ascending) {
    -      47           94 :             sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j)
    -      48         2088 :                 { return scoresKBest[i] < scoresKBest[j]; });
    -      49           94 :             sort(scoresKBest.begin(), scoresKBest.end(), std::less<double>());
    -      50           94 :             if (k < n) {
    -      51          154 :                 for (int i = 0; i < n - k; ++i) {
    -      52          110 :                     featuresKBest.erase(featuresKBest.begin());
    -      53          110 :                     scoresKBest.erase(scoresKBest.begin());
    -      54              :                 }
    -      55              :             }
    -      56              :         } else {
    -      57          384 :             sort(featuresKBest.begin(), featuresKBest.end(), [&](int i, int j)
    -      58        64808 :                 { return scoresKBest[i] > scoresKBest[j]; });
    -      59          384 :             sort(scoresKBest.begin(), scoresKBest.end(), std::greater<double>());
    -      60          384 :             featuresKBest.resize(k);
    -      61          384 :             scoresKBest.resize(k);
    -      62              :         }
    -      63          956 :         return featuresKBest;
    -      64        11000 :     }
    -      65           48 :     std::vector<double> Metrics::getScoresKBest() const
    -      66              :     {
    -      67           48 :         return scoresKBest;
    -      68              :     }
    -      69              : 
    -      70          152 :     torch::Tensor Metrics::conditionalEdge(const torch::Tensor& weights)
    -      71              :     {
    -      72          152 :         auto result = std::vector<double>();
    -      73          152 :         auto source = std::vector<std::string>(features);
    -      74          152 :         source.push_back(className);
    -      75          152 :         auto combinations = doCombinations(source);
    -      76              :         // Compute class prior
    -      77          152 :         auto margin = torch::zeros({ classNumStates }, torch::kFloat);
    -      78          828 :         for (int value = 0; value < classNumStates; ++value) {
    -      79         2704 :             auto mask = samples.index({ -1,  "..." }) == value;
    -      80          676 :             margin[value] = mask.sum().item<double>() / samples.size(1);
    -      81          676 :         }
    -      82         4164 :         for (auto [first, second] : combinations) {
    -      83         4012 :             int index_first = find(features.begin(), features.end(), first) - features.begin();
    -      84         4012 :             int index_second = find(features.begin(), features.end(), second) - features.begin();
    -      85         4012 :             double accumulated = 0;
    -      86        23820 :             for (int value = 0; value < classNumStates; ++value) {
    -      87        79232 :                 auto mask = samples.index({ -1, "..." }) == value;
    -      88        59424 :                 auto first_dataset = samples.index({ index_first, mask });
    -      89        59424 :                 auto second_dataset = samples.index({ index_second, mask });
    -      90        39616 :                 auto weights_dataset = weights.index({ mask });
    -      91        39616 :                 auto mi = mutualInformation(first_dataset, second_dataset, weights_dataset);
    -      92        19808 :                 auto pb = margin[value].item<double>();
    -      93        19808 :                 accumulated += pb * mi;
    -      94        19808 :             }
    -      95         4012 :             result.push_back(accumulated);
    -      96         4012 :         }
    -      97          152 :         long n_vars = source.size();
    -      98          152 :         auto matrix = torch::zeros({ n_vars, n_vars });
    -      99          152 :         auto indices = torch::triu_indices(n_vars, n_vars, 1);
    -     100         4164 :         for (auto i = 0; i < result.size(); ++i) {
    -     101         4012 :             auto x = indices[0][i];
    -     102         4012 :             auto y = indices[1][i];
    -     103         4012 :             matrix[x][y] = result[i];
    -     104         4012 :             matrix[y][x] = result[i];
    -     105         4012 :         }
    -     106          304 :         return matrix;
    -     107        99868 :     }
    -     108        41732 :     double Metrics::entropy(const torch::Tensor& feature, const torch::Tensor& weights)
    -     109              :     {
    -     110        41732 :         torch::Tensor counts = feature.bincount(weights);
    -     111        41732 :         double totalWeight = counts.sum().item<double>();
    -     112        41732 :         torch::Tensor probs = counts.to(torch::kFloat) / totalWeight;
    -     113        41732 :         torch::Tensor logProbs = torch::log(probs);
    -     114        41732 :         torch::Tensor entropy = -probs * logProbs;
    -     115        83464 :         return entropy.nansum().item<double>();
    -     116        41732 :     }
    -     117              :     // H(Y|X) = sum_{x in X} p(x) H(Y|X=x)
    -     118        34276 :     double Metrics::conditionalEntropy(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights)
    -     119              :     {
    -     120        34276 :         int numSamples = firstFeature.sizes()[0];
    -     121        34276 :         torch::Tensor featureCounts = secondFeature.bincount(weights);
    -     122        34276 :         std::unordered_map<int, std::unordered_map<int, double>> jointCounts;
    -     123        34276 :         double totalWeight = 0;
    -     124      6993324 :         for (auto i = 0; i < numSamples; i++) {
    -     125      6959048 :             jointCounts[secondFeature[i].item<int>()][firstFeature[i].item<int>()] += weights[i].item<double>();
    -     126      6959048 :             totalWeight += weights[i].item<float>();
    -     127              :         }
    -     128        34276 :         if (totalWeight == 0)
    -     129            0 :             return 0;
    -     130        34276 :         double entropyValue = 0;
    -     131       168251 :         for (int value = 0; value < featureCounts.sizes()[0]; ++value) {
    -     132       133975 :             double p_f = featureCounts[value].item<double>() / totalWeight;
    -     133       133975 :             double entropy_f = 0;
    -     134       454356 :             for (auto& [label, jointCount] : jointCounts[value]) {
    -     135       320381 :                 double p_l_f = jointCount / featureCounts[value].item<double>();
    -     136       320381 :                 if (p_l_f > 0) {
    -     137       320381 :                     entropy_f -= p_l_f * log(p_l_f);
    -     138              :                 } else {
    -     139            0 :                     entropy_f = 0;
    -     140              :                 }
    -     141              :             }
    -     142       133975 :             entropyValue += p_f * entropy_f;
    -     143              :         }
    -     144        34276 :         return entropyValue;
    -     145        34276 :     }
    -     146              :     // I(X;Y) = H(Y) - H(Y|X)
    -     147        34276 :     double Metrics::mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights)
    -     148              :     {
    -     149        34276 :         return entropy(firstFeature, weights) - conditionalEntropy(firstFeature, secondFeature, weights);
    -     150              :     }
    -     151              :     /*
    -     152              :     Compute the maximum spanning tree considering the weights as distances
    -     153              :     and the indices of the weights as nodes of this square matrix using
    -     154              :     Kruskal algorithm
    -     155              :     */
    -     156          148 :     std::vector<std::pair<int, int>> Metrics::maximumSpanningTree(const std::vector<std::string>& features, const torch::Tensor& weights, const int root)
    -     157              :     {
    -     158          148 :         auto mst = MST(features, weights, root);
    -     159          296 :         return mst.maximumSpanningTree();
    -     160          148 :     }
    -     161              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.gcov.overview.html b/html/bayesnet/utils/BayesMetrics.cc.gcov.overview.html deleted file mode 100644 index 3c88dcb..0000000 --- a/html/bayesnet/utils/BayesMetrics.cc.gcov.overview.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/utils/BayesMetrics.cc.gcov.png b/html/bayesnet/utils/BayesMetrics.cc.gcov.png deleted file mode 100644 index 30f9de1091316dd69e9e517a0c9d6d999ab68f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmV;$13LVPP)H1FnLK=WcJZvsSG12o6K##}p>N13Zg~caeQNjIu9_Oo-nG|+(#z&OPv`~srG*>}LI5Yh&ellzkmpw?qw*uHSm^&h`qB{^K&c|YTces8AgRM!i)ROVbhvA4%O*tazJYOyB@RpcrBow)5#3doON)I! zSL#bn7&UAGFFw%=RRV?--i47_*bye^j}NXWfwzT$3{fJ|1hPNQjwpd@^U)EjlV%HO zlHAtg?Gep47R9A(+_H{K(c)1{19wvCz?uYlu19(TJ&LI4b&GW%+{zB{D6M1L=f#Jn zZ7>EzgW{8Qn%Z68=9MBv*x>KqSjKYPh13&prJjfm2`J?7fZM4#tD1oW`OV7Jd32uH zOZK7Fg&9k+?7qGc287Spc3c2wJB_K?_a0IsF31rOa&IhmgdxR%AQ!~U{#5s2VOj}+1;c`(uSw3~ zgC>h;}($JA<*qT0(VQ?6L6=*8PN=xX2){6 zUE&%oZAL5E_dKzT1x-;$4aiD5Y%OS-Re^xWj4p(kre#CwxWaoJlsbUMwjF4UgtA&! zee93Tqq@yzSno6Cv=J!L!UB!{XzL}zW?WnIls`&|C4s2*X;6$uVJ|6bSwSs7(=UCpczI1UDL=80J0IbM!n|Q*=YPkEvx~toaBa?3&lvj z02+lr16lW%bw0nppOt0$fp5SI7@p!-kUEB;AqWZc#o*%tx04irk?j=F$d273=x4ut z2%2E}&(4Gteuw_ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1313
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    int bayesnet::Metrics::pop_first<int>(std::vector<int, std::allocator<int> >&)94
    std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > bayesnet::Metrics::doCombinations<int>(std::vector<int, std::allocator<int> > const&)1391
    std::vector, std::allocator >, std::__cxx11::basic_string, std::allocator > >, std::allocator, std::allocator >, std::__cxx11::basic_string, std::allocator > > > > bayesnet::Metrics::doCombinations, std::allocator > >(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)152
    std::vector, std::allocator > > bayesnet::Metrics::doCombinations(std::vector > const&)1239
    bayesnet::Metrics::Metrics()2240
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.h.func.html b/html/bayesnet/utils/BayesMetrics.h.func.html deleted file mode 100644 index 9e066cc..0000000 --- a/html/bayesnet/utils/BayesMetrics.h.func.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1313
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Metrics::Metrics()2240
    int bayesnet::Metrics::pop_first<int>(std::vector<int, std::allocator<int> >&)94
    std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > bayesnet::Metrics::doCombinations<int>(std::vector<int, std::allocator<int> > const&)1391
    std::vector, std::allocator > > bayesnet::Metrics::doCombinations(std::vector > const&)1239
    std::vector, std::allocator >, std::__cxx11::basic_string, std::allocator > >, std::allocator, std::allocator >, std::__cxx11::basic_string, std::allocator > > > > bayesnet::Metrics::doCombinations, std::allocator > >(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)152
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.h.gcov.frameset.html b/html/bayesnet/utils/BayesMetrics.h.gcov.frameset.html deleted file mode 100644 index 81a526c..0000000 --- a/html/bayesnet/utils/BayesMetrics.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/utils/BayesMetrics.h.gcov.html b/html/bayesnet/utils/BayesMetrics.h.gcov.html deleted file mode 100644 index 1ac7634..0000000 --- a/html/bayesnet/utils/BayesMetrics.h.gcov.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - BayesMetrics.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %1313
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef BAYESNET_METRICS_H
    -       8              : #define BAYESNET_METRICS_H
    -       9              : #include <vector>
    -      10              : #include <string>
    -      11              : #include <torch/torch.h>
    -      12              : namespace bayesnet {
    -      13              :     class Metrics {
    -      14              :     public:
    -      15         2240 :         Metrics() = default;
    -      16              :         Metrics(const torch::Tensor& samples, const std::vector<std::string>& features, const std::string& className, const int classNumStates);
    -      17              :         Metrics(const std::vector<std::vector<int>>& vsamples, const std::vector<int>& labels, const std::vector<std::string>& features, const std::string& className, const int classNumStates);
    -      18              :         std::vector<int> SelectKBestWeighted(const torch::Tensor& weights, bool ascending = false, unsigned k = 0);
    -      19              :         std::vector<double> getScoresKBest() const;
    -      20              :         double mutualInformation(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights);
    -      21              :         torch::Tensor conditionalEdge(const torch::Tensor& weights);
    -      22              :         std::vector<std::pair<int, int>> maximumSpanningTree(const std::vector<std::string>& features, const torch::Tensor& weights, const int root);
    -      23              :     protected:
    -      24              :         torch::Tensor samples; // n+1xm torch::Tensor used to fit the model where samples[-1] is the y std::vector
    -      25              :         std::string className;
    -      26              :         double entropy(const torch::Tensor& feature, const torch::Tensor& weights);
    -      27              :         std::vector<std::string> features;
    -      28              :         template <class T>
    -      29         1391 :         std::vector<std::pair<T, T>> doCombinations(const std::vector<T>& source)
    -      30              :         {
    -      31         1391 :             std::vector<std::pair<T, T>> result;
    -      32         6981 :             for (int i = 0; i < source.size(); ++i) {
    -      33         5590 :                 T temp = source[i];
    -      34        16517 :                 for (int j = i + 1; j < source.size(); ++j) {
    -      35        10927 :                     result.push_back({ temp, source[j] });
    -      36              :                 }
    -      37              :             }
    -      38         2782 :             return result;
    -      39         1391 :         }
    -      40              :         template <class T>
    -      41           94 :         T pop_first(std::vector<T>& v)
    -      42              :         {
    -      43           94 :             T temp = v[0];
    -      44           94 :             v.erase(v.begin());
    -      45           94 :             return temp;
    -      46              :         }
    -      47              :     private:
    -      48              :         int classNumStates = 0;
    -      49              :         std::vector<double> scoresKBest;
    -      50              :         std::vector<int> featuresKBest; // sorted indices of the features
    -      51              :         double conditionalEntropy(const torch::Tensor& firstFeature, const torch::Tensor& secondFeature, const torch::Tensor& weights);
    -      52              :     };
    -      53              : }
    -      54              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/BayesMetrics.h.gcov.overview.html b/html/bayesnet/utils/BayesMetrics.h.gcov.overview.html deleted file mode 100644 index df94876..0000000 --- a/html/bayesnet/utils/BayesMetrics.h.gcov.overview.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/BayesMetrics.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/utils/BayesMetrics.h.gcov.png b/html/bayesnet/utils/BayesMetrics.h.gcov.png deleted file mode 100644 index e051d4ef66a1d22a8036d1f1885f42e82956c56f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfV!VDxAO=7+Yq$C1-LR|m<|Gx?dmcNgUef6J# zVHHpuOr7)IycEdhEbxddW?X?_wfUqO7#Q_ET^vI^I@gBYl{~D#afP>_bw}gP z`t3;}bv;~f!{vM~$sKQ8pm?-o+XY|7X`}~If zGqqy-na;AfZw%g|;mq75X8T$>K-RnX(4%M@wID1j*Dnil1~SFxV^4~dh7YcH9W{NYZ~T - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:94.1 %6864
    Test Date:2024-05-06 17:54:04Functions:100.0 %1010
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Graph::Graph(int)148
    bayesnet::Graph::kruskal_algorithm()148
    bayesnet::MST::MST(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, at::Tensor const&, int)148
    bayesnet::MST::maximumSpanningTree()148
    bayesnet::reorder(std::vector<std::pair<float, std::pair<int, int> >, std::allocator<std::pair<float, std::pair<int, int> > > >, int)148
    bayesnet::Graph::union_set(int, int)828
    bayesnet::insertElement(std::__cxx11::list<int, std::allocator<int> >&, int)828
    bayesnet::Graph::addEdge(int, int, float)3032
    auto bayesnet::Graph::kruskal_algorithm()::{lambda(auto:1 const&, auto:2 const&)#1}::operator()<std::pair<float, std::pair<int, int> >, std::pair<float, std::pair<int, int> > >(std::pair<float, std::pair<int, int> > const&, std::pair<float, std::pair<int, int> > const&) const11716
    bayesnet::Graph::find_set(int)14076
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.cc.func.html b/html/bayesnet/utils/Mst.cc.func.html deleted file mode 100644 index 166f248..0000000 --- a/html/bayesnet/utils/Mst.cc.func.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:94.1 %6864
    Test Date:2024-05-06 17:54:04Functions:100.0 %1010
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    auto bayesnet::Graph::kruskal_algorithm()::{lambda(auto:1 const&, auto:2 const&)#1}::operator()<std::pair<float, std::pair<int, int> >, std::pair<float, std::pair<int, int> > >(std::pair<float, std::pair<int, int> > const&, std::pair<float, std::pair<int, int> > const&) const11716
    bayesnet::Graph::Graph(int)148
    bayesnet::Graph::addEdge(int, int, float)3032
    bayesnet::Graph::find_set(int)14076
    bayesnet::Graph::kruskal_algorithm()148
    bayesnet::Graph::union_set(int, int)828
    bayesnet::MST::MST(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, at::Tensor const&, int)148
    bayesnet::MST::maximumSpanningTree()148
    bayesnet::insertElement(std::__cxx11::list<int, std::allocator<int> >&, int)828
    bayesnet::reorder(std::vector<std::pair<float, std::pair<int, int> >, std::allocator<std::pair<float, std::pair<int, int> > > >, int)148
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.cc.gcov.frameset.html b/html/bayesnet/utils/Mst.cc.gcov.frameset.html deleted file mode 100644 index d702859..0000000 --- a/html/bayesnet/utils/Mst.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/utils/Mst.cc.gcov.html b/html/bayesnet/utils/Mst.cc.gcov.html deleted file mode 100644 index e567440..0000000 --- a/html/bayesnet/utils/Mst.cc.gcov.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:94.1 %6864
    Test Date:2024-05-06 17:54:04Functions:100.0 %1010
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #include <sstream>
    -       8              : #include <vector>
    -       9              : #include <list>
    -      10              : #include "Mst.h"
    -      11              : /*
    -      12              :     Based on the code from https://www.softwaretestinghelp.com/minimum-spanning-tree-tutorial/
    -      13              : 
    -      14              : */
    -      15              : 
    -      16              : namespace bayesnet {
    -      17          296 :     Graph::Graph(int V) : V(V), parent(std::vector<int>(V))
    -      18              :     {
    -      19         1124 :         for (int i = 0; i < V; i++)
    -      20          976 :             parent[i] = i;
    -      21          148 :         G.clear();
    -      22          148 :         T.clear();
    -      23          148 :     }
    -      24         3032 :     void Graph::addEdge(int u, int v, float wt)
    -      25              :     {
    -      26         3032 :         G.push_back({ wt, { u, v } });
    -      27         3032 :     }
    -      28        14076 :     int Graph::find_set(int i)
    -      29              :     {
    -      30              :         // If i is the parent of itself
    -      31        14076 :         if (i == parent[i])
    -      32         6064 :             return i;
    -      33              :         else
    -      34              :             //else recursively find the parent of i
    -      35         8012 :             return find_set(parent[i]);
    -      36              :     }
    -      37          828 :     void Graph::union_set(int u, int v)
    -      38              :     {
    -      39          828 :         parent[u] = parent[v];
    -      40          828 :     }
    -      41          148 :     void Graph::kruskal_algorithm()
    -      42              :     {
    -      43              :         // sort the edges ordered on decreasing weight
    -      44        11864 :         stable_sort(G.begin(), G.end(), [](const auto& left, const auto& right) {return left.first > right.first;});
    -      45         3180 :         for (int i = 0; i < G.size(); i++) {
    -      46              :             int uSt, vEd;
    -      47         3032 :             uSt = find_set(G[i].second.first);
    -      48         3032 :             vEd = find_set(G[i].second.second);
    -      49         3032 :             if (uSt != vEd) {
    -      50          828 :                 T.push_back(G[i]); // add to mst std::vector
    -      51          828 :                 union_set(uSt, vEd);
    -      52              :             }
    -      53              :         }
    -      54          148 :     }
    -      55              : 
    -      56          828 :     void insertElement(std::list<int>& variables, int variable)
    -      57              :     {
    -      58          828 :         if (std::find(variables.begin(), variables.end(), variable) == variables.end()) {
    -      59          828 :             variables.push_front(variable);
    -      60              :         }
    -      61          828 :     }
    -      62              : 
    -      63          148 :     std::vector<std::pair<int, int>> reorder(std::vector<std::pair<float, std::pair<int, int>>> T, int root_original)
    -      64              :     {
    -      65              :         // Create the edges of a DAG from the MST
    -      66              :         // replacing unordered_set with list because unordered_set cannot guarantee the order of the elements inserted
    -      67          148 :         auto result = std::vector<std::pair<int, int>>();
    -      68          148 :         auto visited = std::vector<int>();
    -      69          148 :         auto nextVariables = std::list<int>();
    -      70          148 :         nextVariables.push_front(root_original);
    -      71         1124 :         while (nextVariables.size() > 0) {
    -      72          976 :             int root = nextVariables.front();
    -      73          976 :             nextVariables.pop_front();
    -      74         3464 :             for (int i = 0; i < T.size(); ++i) {
    -      75         2488 :                 auto [weight, edge] = T[i];
    -      76         2488 :                 auto [from, to] = edge;
    -      77         2488 :                 if (from == root || to == root) {
    -      78          828 :                     visited.insert(visited.begin(), i);
    -      79          828 :                     if (from == root) {
    -      80          560 :                         result.push_back({ from, to });
    -      81          560 :                         insertElement(nextVariables, to);
    -      82              :                     } else {
    -      83          268 :                         result.push_back({ to, from });
    -      84          268 :                         insertElement(nextVariables, from);
    -      85              :                     }
    -      86              :                 }
    -      87              :             }
    -      88              :             // Remove visited
    -      89         1804 :             for (int i = 0; i < visited.size(); ++i) {
    -      90          828 :                 T.erase(T.begin() + visited[i]);
    -      91              :             }
    -      92          976 :             visited.clear();
    -      93              :         }
    -      94          148 :         if (T.size() > 0) {
    -      95            0 :             for (int i = 0; i < T.size(); ++i) {
    -      96            0 :                 auto [weight, edge] = T[i];
    -      97            0 :                 auto [from, to] = edge;
    -      98            0 :                 result.push_back({ from, to });
    -      99              :             }
    -     100              :         }
    -     101          296 :         return result;
    -     102          148 :     }
    -     103              : 
    -     104          148 :     MST::MST(const std::vector<std::string>& features, const torch::Tensor& weights, const int root) : features(features), weights(weights), root(root) {}
    -     105          148 :     std::vector<std::pair<int, int>> MST::maximumSpanningTree()
    -     106              :     {
    -     107          148 :         auto num_features = features.size();
    -     108          148 :         Graph g(num_features);
    -     109              :         // Make a complete graph
    -     110          976 :         for (int i = 0; i < num_features - 1; ++i) {
    -     111         3860 :             for (int j = i + 1; j < num_features; ++j) {
    -     112         3032 :                 g.addEdge(i, j, weights[i][j].item<float>());
    -     113              :             }
    -     114              :         }
    -     115          148 :         g.kruskal_algorithm();
    -     116          148 :         auto mst = g.get_mst();
    -     117          296 :         return reorder(mst, root);
    -     118          148 :     }
    -     119              : 
    -     120              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.cc.gcov.overview.html b/html/bayesnet/utils/Mst.cc.gcov.overview.html deleted file mode 100644 index a8e6cda..0000000 --- a/html/bayesnet/utils/Mst.cc.gcov.overview.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/utils/Mst.cc.gcov.png b/html/bayesnet/utils/Mst.cc.gcov.png deleted file mode 100644 index b6f615adea99d3ac0c13cc53b54663e7324b7569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)Dr5gn$G{h`ndtJ*(Hx5W=58m(TjqZ6Raenl4+o zZuuWu18&vJLt`Gd^8N(WVl-QsgB6s6a2)5S9;2Ctwt?o!go%`Ngj>KQb#FgR z54nr!0T@U7D8_r)luX(^qJq{fi5#^q6dFzjTuPDR{9bF&L!k5+V?>>=pWGay;6v1d z7}L-rU9+Ko5e2E@zaC2=sPg?aMtOCfiXx>sZA9yM+sTv3eZ^B-0siOOPLVhm##m5I zWjDy%Sf5V`9Mv^~fXnRU!Iyk<&)X$wG!e8QNXt#&e04DC^NkQ!=7AoKU?VenbZN<5 z1wJW-k;^P2>NeH(p{pE0%iu4ihtH##8BOYO73MNrS1QTj`sZ_F>5zC|o>T2cx2Ygq z8!Sub4Tgf1ON)VwmB8Kvu!=A4oYK&_sc5Pgsb`$<+N0K{s=B6*hvzBLV@|q+)gWLu z!HpLEN?>0O+;a_*&v8p*3TN__J+^~GubyP%CO;b*l*#l%H%Hepv^?%!&J@OGYQ}QG zs=rof8cb#*rFHvEMuj{Ywh!)a0va1>?%{DR3iw64&g(jk<2=LXg%97xmV6VwOGsqT z7Hh#%!Wc*v_~Yzh0*6jGXqE(}8`Ny??`}wJAA(%nMRc>B>(`B)yxd!j2r2{vft-ow zsQxFZCuMehh*x0+w`fy^ARZ%MImEHGnWQInPH2J}gL!FWpD*aq+Cu*T - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Graph::get_mst()148
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.h.func.html b/html/bayesnet/utils/Mst.h.func.html deleted file mode 100644 index c1c0139..0000000 --- a/html/bayesnet/utils/Mst.h.func.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.h - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::Graph::get_mst()148
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.h.gcov.frameset.html b/html/bayesnet/utils/Mst.h.gcov.frameset.html deleted file mode 100644 index 1290886..0000000 --- a/html/bayesnet/utils/Mst.h.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.h - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/utils/Mst.h.gcov.html b/html/bayesnet/utils/Mst.h.gcov.html deleted file mode 100644 index de46cc2..0000000 --- a/html/bayesnet/utils/Mst.h.gcov.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.h - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - Mst.h (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %11
    Test Date:2024-05-06 17:54:04Functions:100.0 %11
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : #ifndef MST_H
    -       8              : #define MST_H
    -       9              : #include <vector>
    -      10              : #include <string>
    -      11              : #include <torch/torch.h>
    -      12              : namespace bayesnet {
    -      13              :     class MST {
    -      14              :     public:
    -      15              :         MST() = default;
    -      16              :         MST(const std::vector<std::string>& features, const torch::Tensor& weights, const int root);
    -      17              :         std::vector<std::pair<int, int>> maximumSpanningTree();
    -      18              :     private:
    -      19              :         torch::Tensor weights;
    -      20              :         std::vector<std::string> features;
    -      21              :         int root = 0;
    -      22              :     };
    -      23              :     class Graph {
    -      24              :     public:
    -      25              :         explicit Graph(int V);
    -      26              :         void addEdge(int u, int v, float wt);
    -      27              :         int find_set(int i);
    -      28              :         void union_set(int u, int v);
    -      29              :         void kruskal_algorithm();
    -      30          148 :         std::vector <std::pair<float, std::pair<int, int>>> get_mst() { return T; }
    -      31              :     private:
    -      32              :         int V;      // number of nodes in graph
    -      33              :         std::vector <std::pair<float, std::pair<int, int>>> G; // std::vector for graph
    -      34              :         std::vector <std::pair<float, std::pair<int, int>>> T; // std::vector for mst
    -      35              :         std::vector<int> parent;
    -      36              :     };
    -      37              : }
    -      38              : #endif
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/Mst.h.gcov.overview.html b/html/bayesnet/utils/Mst.h.gcov.overview.html deleted file mode 100644 index 606c327..0000000 --- a/html/bayesnet/utils/Mst.h.gcov.overview.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/Mst.h - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/utils/Mst.h.gcov.png b/html/bayesnet/utils/Mst.h.gcov.png deleted file mode 100644 index 142bae36adf0f57b64a30122cd69f09e37cbd804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$A!VDxAx-dEcDTx4|5ZC|z|E~gqvBOMQ{aKip;;e;v=_OZskJisa8mT%DlY?((4s_(@^Y`+R_C~nXMQ-Fcl&WvdC;w} zL*0shcV=9?+-}#Vp8sXejqTztug_^6Ej__kBF9l{Air#)w)%VJ$0 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/bayesnetUtils.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - bayesnetUtils.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2525
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::tensorToVectorDouble(at::Tensor&)32
    bayesnet::vectorToTensor(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, bool)40
    bayesnet::argsort(std::vector<double, std::allocator<double> >&)203
    bayesnet::argsort(std::vector<double, std::allocator<double> >&)::{lambda(int, int)#1}::operator()(int, int) const4041
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/bayesnetUtils.cc.func.html b/html/bayesnet/utils/bayesnetUtils.cc.func.html deleted file mode 100644 index c679cbf..0000000 --- a/html/bayesnet/utils/bayesnetUtils.cc.func.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/bayesnetUtils.cc - functions - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - bayesnetUtils.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2525
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Function Name Sort by function nameHit count Sort by function hit count
    bayesnet::argsort(std::vector<double, std::allocator<double> >&)203
    bayesnet::argsort(std::vector<double, std::allocator<double> >&)::{lambda(int, int)#1}::operator()(int, int) const4041
    bayesnet::tensorToVectorDouble(at::Tensor&)32
    bayesnet::vectorToTensor(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >&, bool)40
    -
    -
    - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/bayesnetUtils.cc.gcov.frameset.html b/html/bayesnet/utils/bayesnetUtils.cc.gcov.frameset.html deleted file mode 100644 index 6364c79..0000000 --- a/html/bayesnet/utils/bayesnetUtils.cc.gcov.frameset.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/bayesnetUtils.cc - - - - - - - - <center>Frames not supported by your browser!<br></center> - - - - diff --git a/html/bayesnet/utils/bayesnetUtils.cc.gcov.html b/html/bayesnet/utils/bayesnetUtils.cc.gcov.html deleted file mode 100644 index b393109..0000000 --- a/html/bayesnet/utils/bayesnetUtils.cc.gcov.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/bayesnetUtils.cc - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utils - bayesnetUtils.cc (source / functions)CoverageTotalHit
    Test:BayesNet Coverage ReportLines:100.0 %2525
    Test Date:2024-05-06 17:54:04Functions:100.0 %44
    Legend: Lines: - hit - not hit -
    -
    - - - - - - - - -

    -
                Line data    Source code
    -
    -       1              : // ***************************************************************
    -       2              : // SPDX-FileCopyrightText: Copyright 2024 Ricardo Montañana Gómez
    -       3              : // SPDX-FileType: SOURCE
    -       4              : // SPDX-License-Identifier: MIT
    -       5              : // ***************************************************************
    -       6              : 
    -       7              : 
    -       8              : #include "bayesnetUtils.h"
    -       9              : namespace bayesnet {
    -      10              :     // Return the indices in descending order
    -      11          203 :     std::vector<int> argsort(std::vector<double>& nums)
    -      12              :     {
    -      13          203 :         int n = nums.size();
    -      14          203 :         std::vector<int> indices(n);
    -      15          203 :         iota(indices.begin(), indices.end(), 0);
    -      16         4244 :         sort(indices.begin(), indices.end(), [&nums](int i, int j) {return nums[i] > nums[j];});
    -      17          406 :         return indices;
    -      18          203 :     }
    -      19           32 :     std::vector<std::vector<double>> tensorToVectorDouble(torch::Tensor& dtensor)
    -      20              :     {
    -      21              :         // convert mxn tensor to mxn std::vector
    -      22           32 :         std::vector<std::vector<double>> result;
    -      23              :         // Iterate over cols
    -      24         8072 :         for (int i = 0; i < dtensor.size(0); ++i) {
    -      25        24120 :             auto col_tensor = dtensor.index({ i, "..." });
    -      26         8040 :             auto col = std::vector<double>(col_tensor.data_ptr<float>(), col_tensor.data_ptr<float>() + dtensor.size(1));
    -      27         8040 :             result.push_back(col);
    -      28         8040 :         }
    -      29           64 :         return result;
    -      30         8072 :     }
    -      31           40 :     torch::Tensor vectorToTensor(std::vector<std::vector<int>>& vector, bool transpose)
    -      32              :     {
    -      33              :         // convert nxm std::vector to mxn tensor if transpose
    -      34           40 :         long int m = transpose ? vector[0].size() : vector.size();
    -      35           40 :         long int n = transpose ? vector.size() : vector[0].size();
    -      36           40 :         auto tensor = torch::zeros({ m, n }, torch::kInt32);
    -      37          276 :         for (int i = 0; i < m; ++i) {
    -      38        57664 :             for (int j = 0; j < n; ++j) {
    -      39        57428 :                 tensor[i][j] = transpose ? vector[j][i] : vector[i][j];
    -      40              :             }
    -      41              :         }
    -      42           80 :         return tensor;
    -      43           40 :     }
    -      44              : }
    -        
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/bayesnetUtils.cc.gcov.overview.html b/html/bayesnet/utils/bayesnetUtils.cc.gcov.overview.html deleted file mode 100644 index a1add40..0000000 --- a/html/bayesnet/utils/bayesnetUtils.cc.gcov.overview.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils/bayesnetUtils.cc - - - - - - - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - overview - - -
    - Top

    - Overview -
    - - diff --git a/html/bayesnet/utils/bayesnetUtils.cc.gcov.png b/html/bayesnet/utils/bayesnetUtils.cc.gcov.png deleted file mode 100644 index 297b589ccc4a0d6c4b9bc65c7f81b45e58fc7a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0YI$7!VDxC?klMPNr?cT5ZC|z|E~gq#{F(FaH}IYrH*s<+6qVvDsm_Wy%<$1oxOsy;$^zamVV9)ybQdCrc%> zKcC}JqREhTr)kgkjZqz!4F2xfz!LJ?-MF%|BjVGXhF2fB6+*+D*EMcQDr(u3dtlGq zO;v}j_{7}UE8iJ!Q(MOFC7ft0KdaO}OV@uQ!}+=&2P}J?lo?IcJ9&NyRZMmuhYAbx;=UQ<}MZG?vuB&uL*BhZO>HQ zb){JDUf^*%k&RO4YwZ=gXfRUbv&V@;~#0LuWU}wEW%& P3?l|lS3j3^P6 - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/index-detail-sort-l.html b/html/bayesnet/utils/index-detail-sort-l.html deleted file mode 100644 index aa1a79c..0000000 --- a/html/bayesnet/utils/index-detail-sort-l.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/index-detail.html b/html/bayesnet/utils/index-detail.html deleted file mode 100644 index 1afd44b..0000000 --- a/html/bayesnet/utils/index-detail.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/index-sort-f.html b/html/bayesnet/utils/index-sort-f.html deleted file mode 100644 index df7670c..0000000 --- a/html/bayesnet/utils/index-sort-f.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/index-sort-l.html b/html/bayesnet/utils/index-sort-l.html deleted file mode 100644 index aa1a79c..0000000 --- a/html/bayesnet/utils/index-sort-l.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/bayesnet/utils/index.html b/html/bayesnet/utils/index.html deleted file mode 100644 index 1afd44b..0000000 --- a/html/bayesnet/utils/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - bayesnet/utils - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top level - bayesnet/utilsCoverageTotalHit
    Test:BayesNet Coverage ReportLines:97.3 %221215
    Test Date:2024-05-06 17:54:04Functions:100.0 %3030
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Filename Sort by file nameLine Coverage ( show details ) Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    BayesMetrics.cc -
    98.2%98.2%
    -
    98.2 %114112100.0 %1111
    BayesMetrics.h -
    100.0%
    -
    100.0 %1313100.0 %44
    Mst.cc -
    94.1%94.1%
    -
    94.1 %6864100.0 %1010
    Mst.h -
    100.0%
    -
    100.0 %11100.0 %11
    bayesnetUtils.cc -
    100.0%
    -
    100.0 %2525100.0 %44
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/cmd_line b/html/cmd_line deleted file mode 100644 index fc7e89b..0000000 --- a/html/cmd_line +++ /dev/null @@ -1 +0,0 @@ -genhtml build_debug/tests/coverage.info --demangle-cpp --output-directory html --title 'BayesNet Coverage Report' -s -k -f --legend diff --git a/html/emerald.png b/html/emerald.png deleted file mode 100644 index 38ad4f4068b935643d2486f323005fb294a9bd7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^Jb!lvI6;R0X`wF(yt=9xVZRt1vCRixIA4P dLn>}1Cji+@42)0J?}79&c)I$ztaD0e0sy@GAL0N2 diff --git a/html/gcov.css b/html/gcov.css deleted file mode 100644 index f329042..0000000 --- a/html/gcov.css +++ /dev/null @@ -1,1073 +0,0 @@ -/* All views: initial background and text color */ -body -{ - color: #000000; - background-color: #ffffff; -} - -/* All views: standard link format*/ -a:link -{ - color: #284fa8; - text-decoration: underline; -} - -/* All views: standard link - visited format */ -a:visited -{ - color: #00cb40; - text-decoration: underline; -} - -/* All views: standard link - activated format */ -a:active -{ - color: #ff0040; - text-decoration: underline; -} - -/* All views: main title format */ -td.title -{ - text-align: center; - padding-bottom: 10px; - font-family: sans-serif; - font-size: 20pt; - font-style: italic; - font-weight: bold; -} -/* "Line coverage date bins" leader */ -td.subTableHeader -{ - text-align: center; - padding-bottom: 6px; - font-family: sans-serif; - font-weight: bold; - vertical-align: center; -} - -/* All views: header item format */ -td.headerItem -{ - text-align: right; - padding-right: 6px; - font-family: sans-serif; - font-weight: bold; - vertical-align: top; - white-space: nowrap; -} - -/* All views: header item value format */ -td.headerValue -{ - text-align: left; - color: #284fa8; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; -} - -/* All views: header item coverage table heading */ -td.headerCovTableHead -{ - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; -} - -/* All views: header item coverage table entry */ -td.headerCovTableEntry -{ - text-align: right; - color: #284fa8; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #dae7fe; -} - -/* All views: header item coverage table entry for high coverage rate */ -td.headerCovTableEntryHi -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #a7fc9d; -} - -/* All views: header item coverage table entry for medium coverage rate */ -td.headerCovTableEntryMed -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #ffea20; -} - -/* All views: header item coverage table entry for ow coverage rate */ -td.headerCovTableEntryLo -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #ff0000; -} - -/* All views: header legend value for legend entry */ -td.headerValueLeg -{ - text-align: left; - color: #000000; - font-family: sans-serif; - font-size: 80%; - white-space: nowrap; - padding-top: 4px; -} - -/* All views: color of horizontal ruler */ -td.ruler -{ - background-color: #6688d4; -} - -/* All views: version string format */ -td.versionInfo -{ - text-align: center; - padding-top: 2px; - font-family: sans-serif; - font-style: italic; -} - -/* Directory view/File view (all)/Test case descriptions: - table headline format */ -td.tableHead -{ - text-align: center; - color: #ffffff; - background-color: #6688d4; - font-family: sans-serif; - font-size: 120%; - font-weight: bold; - white-space: nowrap; - padding-left: 4px; - padding-right: 4px; -} - -span.tableHeadSort -{ - padding-right: 4px; -} - -/* Directory view/File view (all): filename entry format */ -td.coverFile -{ - text-align: left; - padding-left: 10px; - padding-right: 20px; - color: #284fa8; - background-color: #dae7fe; - font-family: monospace; -} - -/* Directory view/File view (all): filename entry format */ -td.overallOwner -{ - text-align: center; - font-weight: bold; - font-family: sans-serif; - background-color: #dae7fe; - padding-right: 10px; - padding-left: 10px; -} - -/* Directory view/File view (all): filename entry format */ -td.ownerName -{ - text-align: right; - font-style: italic; - font-family: sans-serif; - background-color: #E5DBDB; - padding-right: 10px; - padding-left: 20px; -} - -/* Directory view/File view (all): bar-graph entry format*/ -td.coverBar -{ - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; -} - -/* Directory view/File view (all): bar-graph entry format*/ -td.owner_coverBar -{ - padding-left: 10px; - padding-right: 10px; - background-color: #E5DBDB; -} - -/* Directory view/File view (all): bar-graph outline color */ -td.coverBarOutline -{ - background-color: #000000; -} - -/* Directory view/File view (all): percentage entry for files with - high coverage rate */ -td.coverPerHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #a7fc9d; - font-weight: bold; - font-family: sans-serif; -} - -/* 'owner' entry: slightly lighter color than 'coverPerHi' */ -td.owner_coverPerHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #82E0AA; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry */ -td.coverNumDflt -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - white-space: nowrap; - font-family: sans-serif; -} - -/* td background color and font for the 'owner' section of the table */ -td.ownerTla -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #E5DBDB; - white-space: nowrap; - font-family: sans-serif; - font-style: italic; -} - -/* Directory view/File view (all): line count entry for files with - high coverage rate */ -td.coverNumHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #a7fc9d; - white-space: nowrap; - font-family: sans-serif; -} - -td.owner_coverNumHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #82E0AA; - white-space: nowrap; - font-family: sans-serif; -} - -/* Directory view/File view (all): percentage entry for files with - medium coverage rate */ -td.coverPerMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ffea20; - font-weight: bold; - font-family: sans-serif; -} - -td.owner_coverPerMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #F9E79F; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry for files with - medium coverage rate */ -td.coverNumMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ffea20; - white-space: nowrap; - font-family: sans-serif; -} - -td.owner_coverNumMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #F9E79F; - white-space: nowrap; - font-family: sans-serif; -} - -/* Directory view/File view (all): percentage entry for files with - low coverage rate */ -td.coverPerLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - font-weight: bold; - font-family: sans-serif; -} - -td.owner_coverPerLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #EC7063; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry for files with - low coverage rate */ -td.coverNumLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - white-space: nowrap; - font-family: sans-serif; -} - -td.owner_coverNumLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #EC7063; - white-space: nowrap; - font-family: sans-serif; -} - -/* File view (all): "show/hide details" link format */ -a.detail:link -{ - color: #b8d0ff; - font-size:80%; -} - -/* File view (all): "show/hide details" link - visited format */ -a.detail:visited -{ - color: #b8d0ff; - font-size:80%; -} - -/* File view (all): "show/hide details" link - activated format */ -a.detail:active -{ - color: #ffffff; - font-size:80%; -} - -/* File view (detail): test name entry */ -td.testName -{ - text-align: right; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* File view (detail): test percentage entry */ -td.testPer -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* File view (detail): test lines count entry */ -td.testNum -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* Test case descriptions: test name format*/ -dt -{ - font-family: sans-serif; - font-weight: bold; -} - -/* Test case descriptions: description table body */ -td.testDescription -{ - padding-top: 10px; - padding-left: 30px; - padding-bottom: 10px; - padding-right: 30px; - background-color: #dae7fe; -} - -/* Source code view: function entry */ -td.coverFn -{ - text-align: left; - padding-left: 10px; - padding-right: 20px; - color: #284fa8; - background-color: #dae7fe; - font-family: monospace; -} - -/* Source code view: function entry zero count*/ -td.coverFnLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - font-weight: bold; - font-family: sans-serif; -} - -/* Source code view: function entry nonzero count*/ -td.coverFnHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-weight: bold; - font-family: sans-serif; -} - -td.coverFnAlias -{ - text-align: right; - padding-left: 10px; - padding-right: 20px; - color: #284fa8; - /* make this a slightly different color than the leader - otherwise, - otherwise the alias is hard to distinguish in the table */ - background-color: #E5DBDB; /* very light pale grey/blue */ - font-family: monospace; -} - -/* Source code view: function entry zero count*/ -td.coverFnAliasLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #EC7063; /* lighter red */ - font-family: sans-serif; -} - -/* Source code view: function entry nonzero count*/ -td.coverFnAliasHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-weight: bold; - font-family: sans-serif; -} - -/* Source code view: source code format */ -pre.source -{ - font-family: monospace; - white-space: pre; - margin-top: 2px; -} - -/* Source code view: line number format */ -span.lineNum -{ - background-color: #efe383; -} - -/* Source code view: format for Cov legend */ -span.coverLegendCov -{ - padding-left: 10px; - padding-right: 10px; - padding-bottom: 2px; - background-color: #cad7fe; -} - -/* Source code view: format for NoCov legend */ -span.coverLegendNoCov -{ - padding-left: 10px; - padding-right: 10px; - padding-bottom: 2px; - background-color: #ff6230; -} - -/* Source code view: format for the source code heading line */ -pre.sourceHeading -{ - white-space: pre; - font-family: monospace; - font-weight: bold; - margin: 0px; -} - -/* All views: header legend value for low rate */ -td.headerValueLegL -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 4px; - padding-right: 2px; - background-color: #ff0000; - font-size: 80%; -} - -/* All views: header legend value for med rate */ -td.headerValueLegM -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 2px; - padding-right: 2px; - background-color: #ffea20; - font-size: 80%; -} - -/* All views: header legend value for hi rate */ -td.headerValueLegH -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 2px; - padding-right: 4px; - background-color: #a7fc9d; - font-size: 80%; -} - -/* All views except source code view: legend format for low coverage */ -span.coverLegendCovLo -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #ff0000; -} - -/* All views except source code view: legend format for med coverage */ -span.coverLegendCovMed -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #ffea20; -} - -/* All views except source code view: legend format for hi coverage */ -span.coverLegendCovHi -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #a7fc9d; -} - -a.branchTla:link -{ - color: #000000; -} - -a.branchTla:visited -{ - color: #000000; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered New Code (+ => 0): -Newly added code is not tested" */ -td.tlaUNC -{ - text-align: right; - background-color: #FF6230; -} -td.tlaBgUNC { - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered New Code (+ => 0): -Newly added code is not tested" */ -span.tlaUNC -{ - text-align: left; - background-color: #FF6230; -} -span.tlaBgUNC { - background-color: #FF6230; -} -a.tlaBgUNC { - background-color: #FF6230; - color: #000000; -} - -td.headerCovTableHeadUNC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Lost Baseline Coverage (1 => 0): -Unchanged code is no longer tested" */ -td.tlaLBC -{ - text-align: right; - background-color: #FF6230; -} -td.tlaBgLBC { - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Lost Baseline Coverage (1 => 0): -Unchanged code is no longer tested" */ -span.tlaLBC -{ - text-align: left; - background-color: #FF6230; -} -span.tlaBgLBC { - background-color: #FF6230; -} -a.tlaBgLBC { - background-color: #FF6230; - color: #000000; -} - -td.headerCovTableHeadLBC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered Included Code (# => 0): -Previously unused code is untested" */ -td.tlaUIC -{ - text-align: right; - background-color: #FF6230; -} -td.tlaBgUIC { - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered Included Code (# => 0): -Previously unused code is untested" */ -span.tlaUIC -{ - text-align: left; - background-color: #FF6230; -} -span.tlaBgUIC { - background-color: #FF6230; -} -a.tlaBgUIC { - background-color: #FF6230; - color: #000000; -} - -td.headerCovTableHeadUIC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered Baseline Code (0 => 0): -Unchanged code was untested before, is untested now" */ -td.tlaUBC -{ - text-align: right; - background-color: #FF6230; -} -td.tlaBgUBC { - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Uncovered Baseline Code (0 => 0): -Unchanged code was untested before, is untested now" */ -span.tlaUBC -{ - text-align: left; - background-color: #FF6230; -} -span.tlaBgUBC { - background-color: #FF6230; -} -a.tlaBgUBC { - background-color: #FF6230; - color: #000000; -} - -td.headerCovTableHeadUBC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FF6230; -} - -/* Source code view/table entry backround: format for lines classified as "Gained Baseline Coverage (0 => 1): -Unchanged code is tested now" */ -td.tlaGBC -{ - text-align: right; - background-color: #CAD7FE; -} -td.tlaBgGBC { - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Gained Baseline Coverage (0 => 1): -Unchanged code is tested now" */ -span.tlaGBC -{ - text-align: left; - background-color: #CAD7FE; -} -span.tlaBgGBC { - background-color: #CAD7FE; -} -a.tlaBgGBC { - background-color: #CAD7FE; - color: #000000; -} - -td.headerCovTableHeadGBC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Gained Included Coverage (# => 1): -Previously unused code is tested now" */ -td.tlaGIC -{ - text-align: right; - background-color: #CAD7FE; -} -td.tlaBgGIC { - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Gained Included Coverage (# => 1): -Previously unused code is tested now" */ -span.tlaGIC -{ - text-align: left; - background-color: #CAD7FE; -} -span.tlaBgGIC { - background-color: #CAD7FE; -} -a.tlaBgGIC { - background-color: #CAD7FE; - color: #000000; -} - -td.headerCovTableHeadGIC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Gained New Coverage (+ => 1): -Newly added code is tested" */ -td.tlaGNC -{ - text-align: right; - background-color: #CAD7FE; -} -td.tlaBgGNC { - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Gained New Coverage (+ => 1): -Newly added code is tested" */ -span.tlaGNC -{ - text-align: left; - background-color: #CAD7FE; -} -span.tlaBgGNC { - background-color: #CAD7FE; -} -a.tlaBgGNC { - background-color: #CAD7FE; - color: #000000; -} - -td.headerCovTableHeadGNC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Covered Baseline Code (1 => 1): -Unchanged code was tested before and is still tested" */ -td.tlaCBC -{ - text-align: right; - background-color: #CAD7FE; -} -td.tlaBgCBC { - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Covered Baseline Code (1 => 1): -Unchanged code was tested before and is still tested" */ -span.tlaCBC -{ - text-align: left; - background-color: #CAD7FE; -} -span.tlaBgCBC { - background-color: #CAD7FE; -} -a.tlaBgCBC { - background-color: #CAD7FE; - color: #000000; -} - -td.headerCovTableHeadCBC { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #CAD7FE; -} - -/* Source code view/table entry backround: format for lines classified as "Excluded Uncovered Baseline (0 => #): -Previously untested code is unused now" */ -td.tlaEUB -{ - text-align: right; - background-color: #FFFFFF; -} -td.tlaBgEUB { - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Excluded Uncovered Baseline (0 => #): -Previously untested code is unused now" */ -span.tlaEUB -{ - text-align: left; - background-color: #FFFFFF; -} -span.tlaBgEUB { - background-color: #FFFFFF; -} -a.tlaBgEUB { - background-color: #FFFFFF; - color: #000000; -} - -td.headerCovTableHeadEUB { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Excluded Covered Baseline (1 => #): -Previously tested code is unused now" */ -td.tlaECB -{ - text-align: right; - background-color: #FFFFFF; -} -td.tlaBgECB { - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Excluded Covered Baseline (1 => #): -Previously tested code is unused now" */ -span.tlaECB -{ - text-align: left; - background-color: #FFFFFF; -} -span.tlaBgECB { - background-color: #FFFFFF; -} -a.tlaBgECB { - background-color: #FFFFFF; - color: #000000; -} - -td.headerCovTableHeadECB { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Deleted Uncovered Baseline (0 => -): -Previously untested code has been deleted" */ -td.tlaDUB -{ - text-align: right; - background-color: #FFFFFF; -} -td.tlaBgDUB { - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Deleted Uncovered Baseline (0 => -): -Previously untested code has been deleted" */ -span.tlaDUB -{ - text-align: left; - background-color: #FFFFFF; -} -span.tlaBgDUB { - background-color: #FFFFFF; -} -a.tlaBgDUB { - background-color: #FFFFFF; - color: #000000; -} - -td.headerCovTableHeadDUB { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Deleted Covered Baseline (1 => -): -Previously tested code has been deleted" */ -td.tlaDCB -{ - text-align: right; - background-color: #FFFFFF; -} -td.tlaBgDCB { - background-color: #FFFFFF; -} - -/* Source code view/table entry backround: format for lines classified as "Deleted Covered Baseline (1 => -): -Previously tested code has been deleted" */ -span.tlaDCB -{ - text-align: left; - background-color: #FFFFFF; -} -span.tlaBgDCB { - background-color: #FFFFFF; -} -a.tlaBgDCB { - background-color: #FFFFFF; - color: #000000; -} - -td.headerCovTableHeadDCB { - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - white-space: nowrap; - background-color: #FFFFFF; -} - -/* Source code view: format for date/owner bin that is not hit */ -span.missBins -{ - background-color: #ff0000 /* red */ -} diff --git a/html/glass.png b/html/glass.png deleted file mode 100644 index e1abc00680a3093c49fdb775ae6bdb6764c95af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmSN`?>!lvI6;R0X`wF z|Ns97GD8ntt^-nxB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+eGhVt|_XjA* zUgGKN%6^Gmn4d%Ph(nkFP>9RZ#WAE}PI3Z}&BVayv3^M*kj3EX>gTe~DWM4f=_Dpv diff --git a/html/index-sort-f.html b/html/index-sort-f.html deleted file mode 100644 index 5c93be8..0000000 --- a/html/index-sort-f.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top levelCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %16101594
    Test Date:2024-05-06 17:54:04Functions:100.0 %237237
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Directory Sort by file nameLine Coverage Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    bayesnet -
    100.0%
    -
    100.0 %11100.0 %11
    bayesnet/feature_selection -
    98.7%98.7%
    -
    98.7 %152150100.0 %1919
    bayesnet/utils -
    97.3%97.3%
    -
    97.3 %221215100.0 %3030
    bayesnet/ensembles -
    99.1%99.1%
    -
    99.1 %468464100.0 %5454
    bayesnet/network -
    100.0%
    -
    100.0 %384384100.0 %6161
    bayesnet/classifiers -
    99.0%99.0%
    -
    99.0 %384380100.0 %7272
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/index-sort-l.html b/html/index-sort-l.html deleted file mode 100644 index 6ae4f1b..0000000 --- a/html/index-sort-l.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top levelCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %16101594
    Test Date:2024-05-06 17:54:04Functions:100.0 %237237
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Directory Sort by file nameLine Coverage Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    bayesnet/utils -
    97.3%97.3%
    -
    97.3 %221215100.0 %3030
    bayesnet/feature_selection -
    98.7%98.7%
    -
    98.7 %152150100.0 %1919
    bayesnet/classifiers -
    99.0%99.0%
    -
    99.0 %384380100.0 %7272
    bayesnet/ensembles -
    99.1%99.1%
    -
    99.1 %468464100.0 %5454
    bayesnet -
    100.0%
    -
    100.0 %11100.0 %11
    bayesnet/network -
    100.0%
    -
    100.0 %384384100.0 %6161
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/index.html b/html/index.html deleted file mode 100644 index cd28fc6..0000000 --- a/html/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - LCOV - BayesNet Coverage Report - - - - - - - - - - - - - - -
    LCOV - code coverage report
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Current view:top levelCoverageTotalHit
    Test:BayesNet Coverage ReportLines:99.0 %16101594
    Test Date:2024-05-06 17:54:04Functions:100.0 %237237
    Legend: Rating: - low: < 75 % - medium: >= 75 % - high: >= 90 % -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Directory Sort by file nameLine Coverage Sort by line coverageFunction Coverage Sort by function coverage
    Rate Total Hit Rate Total Hit
    bayesnet -
    100.0%
    -
    100.0 %11100.0 %11
    bayesnet/classifiers -
    99.0%99.0%
    -
    99.0 %384380100.0 %7272
    bayesnet/ensembles -
    99.1%99.1%
    -
    99.1 %468464100.0 %5454
    bayesnet/feature_selection -
    98.7%98.7%
    -
    98.7 %152150100.0 %1919
    bayesnet/network -
    100.0%
    -
    100.0 %384384100.0 %6161
    bayesnet/utils -
    97.3%97.3%
    -
    97.3 %221215100.0 %3030
    -
    -
    - - - - -
    Generated by: LCOV version 2.0-1
    -
    - - - diff --git a/html/ruby.png b/html/ruby.png deleted file mode 100644 index 991b6d4ec9e78be165e3ef757eed1aada287364d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^FceV#7`HfI^%F z9+AZi4BSE>%y{W;-5;PJOS+@4BLl<6e(pbstUx|nfKQ0)e^Y%R^MdiLxj>4`)5S5Q b;#P73kj=!v_*DHKNFRfztDnm{r-UW|iOwIS diff --git a/html/snow.png b/html/snow.png deleted file mode 100644 index 2cdae107fceec6e7f02ac7acb4a34a82a540caa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^MM!lvI6;R0X`wF|Ns97GD8ntt^-nBo-U3d c6}OTTfNUlP#;5A{K>8RwUHx3vIVCg!071?oo&W#< diff --git a/html/updown.png b/html/updown.png deleted file mode 100644 index aa56a238b3e6c435265250f9266cd1b8caba0f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`*?77*hG?8mPH5^{)z4*}Q$iB}huR`+ From 53710378de099d6dfd099edc77319d7a5013b091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Thu, 23 May 2024 17:34:48 +0000 Subject: [PATCH 19/21] Fix manual generation and deploy --- CMakeLists.txt | 2 +- Makefile | 2 +- README.md | 2 +- docs/Doxyfile.in | 13 ++++++------- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a2d731..eed7062 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,7 @@ install(FILES ${CMAKE_BINARY_DIR}/configured_files/include/bayesnet/config.h DES # Documentation # ------------- -find_package(Doxygen REQUIRED dot) +find_package(Doxygen) set(DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/docs) set(doxyfile_in ${DOC_DIR}/Doxyfile.in) set(doxyfile ${DOC_DIR}/Doxyfile) diff --git a/Makefile b/Makefile index cb02f3a..62a9fd4 100644 --- a/Makefile +++ b/Makefile @@ -140,7 +140,7 @@ viewcoverage: ## View the html coverage report exit 1; \ fi @$(genhtml) $(f_debug)/tests/coverage.info --demangle-cpp --output-directory $(docsrcdir)/coverage --title "BayesNet Coverage Report" -s -k -f --legend >/dev/null 2>&1; - @xdg-open html/index.html || open html/index.html 2>/dev/null + @xdg-open $(docsrcdir)/coverage/index.html || open $(docsrcdir)/coverage/index.html 2>/dev/null @echo ">>> Done"; updatebadge: ## Update the coverage badge in README.md diff --git a/README.md b/README.md index 1b47306..e444046 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=rmontanana_BayesNet&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=rmontanana_BayesNet) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=rmontanana_BayesNet&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=rmontanana_BayesNet) ![Gitea Last Commit](https://img.shields.io/gitea/last-commit/rmontanana/bayesnet?gitea_url=https://gitea.rmontanana.es:3000&logo=gitea) -[![Coverage Badge](https://img.shields.io/badge/Coverage-99,0%25-green)](html/index.html) +[![Coverage Badge](https://img.shields.io/badge/Coverage-97,3%25-green)](html/index.html) Bayesian Network Classifiers using libtorch from scratch diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index afb2526..e030387 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -61,7 +61,7 @@ PROJECT_BRIEF = "@CMAKE_PROJECT_DESCRIPTION@" # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = /Users/rmontanana/Code/BayesNet/docs/logo_small.png +PROJECT_LOGO = logo_small.png # With the PROJECT_ICON tag one can specify an icon that is included in the tabs # when the HTML document is shown. Doxygen will copy the logo to the output @@ -74,7 +74,7 @@ PROJECT_ICON = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = /Users/rmontanana/Code/BayesNet/docs +OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -949,8 +949,8 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = /Users/rmontanana/Code/BayesNet/bayesnet -INPUT += /Users/rmontanana/Code/BayesNet/README.md +INPUT = ../bayesnet +INPUT += ../README.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1425,8 +1425,7 @@ HTML_EXTRA_STYLESHEET = # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = /Users/rmontanana/Code/BayesNet/diagrams -HTML_EXTRA_FILES += /Users/rmontanana/Code/BayesNet/logo.png +HTML_EXTRA_FILES = ../logo.png # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. @@ -2264,7 +2263,7 @@ GENERATE_MAN = YES # The default directory is: man. # This tag requires that the tag GENERATE_MAN is set to YES. -MAN_OUTPUT = /Users/rmontanana/Code/BayesNet/docs +MAN_OUTPUT = ./ # The MAN_EXTENSION tag determines the extension that is added to the generated # man pages. In case the manual section does not start with a number, the number From 7bb8e4df01166e81413464b3a04a2bcd54c17f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Thu, 23 May 2024 18:59:08 +0000 Subject: [PATCH 20/21] Fix back to manual link --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index 62a9fd4..af2411b 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ n_procs = -j 16 docsrcdir = docs/manual mansrcdir = docs/man3 mandestdir = /usr/local/share/man +sed_command = 's/e">LCOV -/e">Back to manual<\/a> LCOV -/g' define ClearTests @for t in $(test_targets); do \ @@ -157,6 +158,12 @@ doc: ## Generate documentation @echo ">>> Generating documentation..." @cmake --build $(f_release) -t doxygen @cp -rp diagrams $(docsrcdir) + @ + @if [ "$(shell uname)" = "Darwin" ]; then \ + sed -i "" $(sed_command) $(docsrcdir)/coverage/index.html ; \ + else \ + sed -i $(sed_command) $(docsrcdir)/coverage/index.html ; \ + fi @echo ">>> Done"; docdir = "" From 015b1b0c0f9709384a78853b80a3bb11a1583fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Tue, 28 May 2024 11:43:39 +0200 Subject: [PATCH 21/21] Fix diagram size in manual --- Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index af2411b..3515580 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ n_procs = -j 16 docsrcdir = docs/manual mansrcdir = docs/man3 mandestdir = /usr/local/share/man -sed_command = 's/e">LCOV -/e">Back to manual<\/a> LCOV -/g' +sed_command_link = 's/e">LCOV -/e">Back to manual<\/a> LCOV -/g' +sed_command_diagram = 's/Diagram"/Diagram" width="100%" height="100%" /g' define ClearTests @for t in $(test_targets); do \ @@ -160,9 +161,11 @@ doc: ## Generate documentation @cp -rp diagrams $(docsrcdir) @ @if [ "$(shell uname)" = "Darwin" ]; then \ - sed -i "" $(sed_command) $(docsrcdir)/coverage/index.html ; \ + sed -i "" $(sed_command_link) $(docsrcdir)/coverage/index.html ; \ + sed -i "" $(sed_command_diagram) $(docsrcdir)/index.html ; \ else \ - sed -i $(sed_command) $(docsrcdir)/coverage/index.html ; \ + sed -i $(sed_command_link) $(docsrcdir)/coverage/index.html ; \ + sed -i $(sed_command_diagram) $(docsrcdir)/index.html ; \ fi @echo ">>> Done";