diff --git a/src/feature_creation/node/FeatureNode.hpp b/src/feature_creation/node/FeatureNode.hpp index f6504d49fea7af6a8d408231bb0992ef5ea4e28c..20562e86052d40c9a8778e0c11f08e272f810f99 100644 --- a/src/feature_creation/node/FeatureNode.hpp +++ b/src/feature_creation/node/FeatureNode.hpp @@ -124,8 +124,6 @@ public: */ inline int rung(int cur_rung = 0){return cur_rung;} - inline std::vector<node_ptr> feats(){return {};} - /** * @brief update the dictionary used to check if an Add/Sub node is valid * diff --git a/src/feature_creation/node/Node.hpp b/src/feature_creation/node/Node.hpp index d3d60fadcadb1f9d42e4b2fa479586b93b611c25..a4602172f0ef079f85a3c79d7379d507f568500c 100644 --- a/src/feature_creation/node/Node.hpp +++ b/src/feature_creation/node/Node.hpp @@ -118,8 +118,6 @@ public: */ virtual std::vector<double> test_value() = 0; - virtual std::vector<std::shared_ptr<Node>> feats() = 0; - /** * @brief Set the value for the feature */ diff --git a/src/feature_creation/node/operator_nodes/OperatorNode.cpp b/src/feature_creation/node/operator_nodes/OperatorNode.cpp index 80b6ea1321f02bf68049e31356744fd8309c12bb..df0a67d2cc0bc8286970748695986d7d1fc1548d 100644 --- a/src/feature_creation/node/operator_nodes/OperatorNode.cpp +++ b/src/feature_creation/node/operator_nodes/OperatorNode.cpp @@ -1,52 +1,52 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -OperatorNode::OperatorNode() -{} - -OperatorNode::OperatorNode(std::vector<node_ptr> feats, int rung, int feat_ind) : - Node(feat_ind, feats[0]->n_samp(), feats[0]->n_test_samp()), - _feats(feats) -{} - -OperatorNode::~OperatorNode() -{} - -double* OperatorNode::value_ptr(int offset) -{ - offset = (offset == -1) ? rung() : offset; - if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_reg(_arr_ind, offset) != _arr_ind)) - { - set_value(offset); - node_value_arrs::temp_storage_reg(_arr_ind, offset) = _arr_ind; - } - - return node_value_arrs::get_value_ptr(_arr_ind, offset); -} - -double* OperatorNode::test_value_ptr(int offset) -{ - offset = (offset == -1) ? rung() : offset; - if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_test_reg(_arr_ind, offset) != _arr_ind)) - { - set_test_value(offset); - node_value_arrs::temp_storage_test_reg(_arr_ind, offset) = _arr_ind; - } - - return node_value_arrs::get_test_value_ptr(_arr_ind, offset); -} - -std::vector<double> OperatorNode::value() -{ - std::vector<double> val(_n_samp, 0.0); - std::copy_n(value_ptr(), _n_samp, val.data()); - return val; -} - -std::vector<double> OperatorNode::test_value() -{ - std::vector<double> val(_n_test_samp, 0.0); - std::copy_n(test_value_ptr(), _n_test_samp, val.data()); - return val; -} +// OperatorNode::OperatorNode() +// {} + +// OperatorNode::OperatorNode(std::array<node_ptr, 1> feats, int rung, int feat_ind) : +// Node(feat_ind, feats[0]->n_samp(), feats[0]->n_test_samp()), +// _feats(feats) +// {} + +// OperatorNode::~OperatorNode() +// {} + +// double* OperatorNode::value_ptr(int offset) +// { +// offset = (offset == -1) ? rung() : offset; +// if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_reg(_arr_ind, offset) != _arr_ind)) +// { +// set_value(offset); +// node_value_arrs::temp_storage_reg(_arr_ind, offset) = _arr_ind; +// } + +// return node_value_arrs::get_value_ptr(_arr_ind, offset); +// } + +// double* OperatorNode::test_value_ptr(int offset) +// { +// offset = (offset == -1) ? rung() : offset; +// if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_test_reg(_arr_ind, offset) != _arr_ind)) +// { +// set_test_value(offset); +// node_value_arrs::temp_storage_test_reg(_arr_ind, offset) = _arr_ind; +// } + +// return node_value_arrs::get_test_value_ptr(_arr_ind, offset); +// } + +// std::vector<double> OperatorNode::value() +// { +// std::vector<double> val(_n_samp, 0.0); +// std::copy_n(value_ptr(), _n_samp, val.data()); +// return val; +// } + +// std::vector<double> OperatorNode::test_value() +// { +// std::vector<double> val(_n_test_samp, 0.0); +// std::copy_n(test_value_ptr(), _n_test_samp, val.data()); +// return val; +// } BOOST_SERIALIZATION_ASSUME_ABSTRACT(OperatorNode) diff --git a/src/feature_creation/node/operator_nodes/OperatorNode.hpp b/src/feature_creation/node/operator_nodes/OperatorNode.hpp index d8aaa8bba8767fdea3f2171440f461e4d02736b1..bf7ce32f157b3184b84ee79784f64f7e79e2a2fe 100644 --- a/src/feature_creation/node/operator_nodes/OperatorNode.hpp +++ b/src/feature_creation/node/operator_nodes/OperatorNode.hpp @@ -17,6 +17,7 @@ * @details * */ +template<int N> class OperatorNode: public Node { friend class boost::serialization::access; @@ -28,14 +29,15 @@ class OperatorNode: public Node ar & _feats; } protected: - std::vector<node_ptr> _feats; + std::array<node_ptr, N> _feats; public: /** * @brief Base Constructor * @details This is only used for serialization */ - OperatorNode(); + OperatorNode() + {} /** * @brief Constructor @@ -45,19 +47,31 @@ public: * @param rung run the feature is on (depth of the tree) * @param feat_ind index of the feature */ - OperatorNode(std::vector<node_ptr> feats, int rung, int feat_ind); + OperatorNode(std::array<node_ptr, N> feats, int rung, int feat_ind) : + Node(feat_ind, feats[0]->n_samp(), feats[0]->n_test_samp()), + _feats(feats) + {} - virtual ~OperatorNode(); + virtual ~OperatorNode() + {} virtual std::string expr() = 0; virtual Unit unit() = 0; - std::vector<double> value(); - - std::vector<double> test_value(); + std::vector<double> value() + { + std::vector<double> val(_n_samp, 0.0); + std::copy_n(value_ptr(), _n_samp, val.data()); + return val; + } - inline std::vector<node_ptr> feats(){return _feats;} + std::vector<double> test_value() + { + std::vector<double> val(_n_test_samp, 0.0); + std::copy_n(test_value_ptr(), _n_test_samp, val.data()); + return val; + } virtual void set_value(int offset = -1) = 0; @@ -71,7 +85,17 @@ public: * * @return pointer to the feature's value */ - double* value_ptr(int offset=-1); + double* value_ptr(int offset=-1) + { + offset = (offset == -1) ? rung() : offset; + if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_reg(_arr_ind, offset) != _arr_ind)) + { + set_value(offset); + node_value_arrs::temp_storage_reg(_arr_ind, offset) = _arr_ind; + } + + return node_value_arrs::get_value_ptr(_arr_ind, offset); + } /** * @brief Get the pointer to the feature's data @@ -81,7 +105,17 @@ public: * * @return pointer to the feature's test values */ - double* test_value_ptr(int offset=-1); + double* test_value_ptr(int offset=-1) + { + offset = (offset == -1) ? rung() : offset; + if((rung() > node_value_arrs::N_RUNGS_STORED) && (node_value_arrs::temp_storage_test_reg(_arr_ind, offset) != _arr_ind)) + { + set_test_value(offset); + node_value_arrs::temp_storage_test_reg(_arr_ind, offset) = _arr_ind; + } + + return node_value_arrs::get_test_value_ptr(_arr_ind, offset); + } /** * @brief Check if the feature contains NaN diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.cpp index ae7ee26ae67cfa0a0c30b9262d6ab2a293ea102c..881891f84daf6192aec33b5b91174d1d463c2a43 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.cpp @@ -5,7 +5,7 @@ AbsDiffNode::AbsDiffNode() {} -AbsDiffNode::AbsDiffNode(std::vector<node_ptr> feats, int rung, int feat_ind) : +AbsDiffNode::AbsDiffNode(std::array<node_ptr, 2> feats, int rung, int feat_ind) : OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != feats[1]->unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.hpp index 7434f27edd2bf9b2004216e58da2ac506041f240..e6a4d9ad6a01d7470c006f19d189ff38c9458278 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_difference.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class AbsDiffNode: public OperatorNode +class AbsDiffNode: public OperatorNode<2> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class AbsDiffNode: public OperatorNode public: AbsDiffNode(); - AbsDiffNode(std::vector<node_ptr> feats, int rung, int feat_ind); + AbsDiffNode(std::array<node_ptr, 2> feats, int rung, int feat_ind); AbsDiffNode(node_ptr feat_1, node_ptr feat_2, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.cpp index 7c01d21a57593bbdec591d607f9d7c45573b3baf..65873d33f8c848fa0c3c47cb50b95aff69f5a3e3 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.cpp @@ -5,7 +5,7 @@ AbsNode::AbsNode() {} -AbsNode::AbsNode(std::vector<node_ptr> feats, int rung, int feat_ind): +AbsNode::AbsNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { set_value(); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.hpp index 11cb5c7c60863ea11e960ffa0e7334a38c202bb0..092acd3ccfed3ad20b24b086df74e7b26ee2b18a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/absolute_value.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class AbsNode: public OperatorNode +class AbsNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class AbsNode: public OperatorNode public: AbsNode(); - AbsNode(std::vector<node_ptr> feats, int rung, int feat_ind); + AbsNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); AbsNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.cpp index 0a4742b5dc365a8f3920be53700f268fcd34164e..9b8751a8972e93ef8f59d9875766b1df08cc686a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.cpp @@ -3,7 +3,7 @@ AddNode::AddNode() {} -AddNode::AddNode(std::vector<node_ptr> feats, int rung, int feat_ind): +AddNode::AddNode(std::array<node_ptr, 2> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != feats[1]->unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.hpp index de207aa7c99bcb29b201c976b05f3821cf9d343c..2b09833e3a9b44d5799c46decf076df3ff486027 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/add.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class AddNode: public OperatorNode +class AddNode: public OperatorNode<2> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class AddNode: public OperatorNode public: AddNode(); - AddNode(std::vector<node_ptr> feats, int rung, int feat_ind); + AddNode(std::array<node_ptr, 2> feats, int rung, int feat_ind); AddNode(node_ptr feat_1, node_ptr feat_2, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.cpp index 697094e2529677b64f7e3eb448d32c43431db713..d1fa2e0a8e6b0c48fef161b801f6794934c0e38a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.cpp @@ -3,7 +3,7 @@ CosNode::CosNode() {} -CosNode::CosNode(std::vector<node_ptr> feats, int rung, int feat_ind): +CosNode::CosNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != Unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.hpp index 97eda826f5f9bdface43dba53db42fcea8b63e01..be84327bddaba869b46114c2946971b3ddb7b128 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cos.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class CosNode: public OperatorNode +class CosNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class CosNode: public OperatorNode public: CosNode(); - CosNode(std::vector<node_ptr> feats, int rung, int feat_ind); + CosNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); CosNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.cpp index d98cc3e332a600651b28b731bd43ed558162ef33..a49c519588952cddb34ec83482093b8a6f6c449a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.cpp @@ -3,7 +3,7 @@ CbNode::CbNode() {} -CbNode::CbNode(std::vector<node_ptr> feats, int rung, int feat_ind): +CbNode::CbNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->type() == NODE_TYPE::CBRT) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.hpp index 420af5caa4873eb90dedad72de6a552840e604f6..3afa8b20099d20ee27254c3cba0bb931d97c6e90 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class CbNode: public OperatorNode +class CbNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class CbNode: public OperatorNode public: CbNode(); - CbNode(std::vector<node_ptr> feats, int rung, int feat_ind); + CbNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); CbNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.cpp index b824bec6e26a80d4a6593ad292ea09393172524b..20cde3f9e3a3cf20056184f52eb6ebc4ea7d5486 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.cpp @@ -3,7 +3,7 @@ CbrtNode::CbrtNode() {} -CbrtNode::CbrtNode(std::vector<node_ptr> feats, int rung, int feat_ind): +CbrtNode::CbrtNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->type() == NODE_TYPE::CB) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.hpp index b69afd46e9bd2dbb3976fa61c46f49a15b0caac4..1152fd2afe5229aeb02129cd94909a483c0c4d78 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/cube_root.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class CbrtNode: public OperatorNode +class CbrtNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class CbrtNode: public OperatorNode public: CbrtNode(); - CbrtNode(std::vector<node_ptr> feats, int rung, int feat_ind); + CbrtNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); CbrtNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.cpp index 6aa3db9390ac6cbd5fee4f1b95041f6474888898..837fb44b48c92e71a662a95c1ed25fb2a7280222 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.cpp @@ -3,7 +3,7 @@ DivNode::DivNode() {} -DivNode::DivNode(std::vector<node_ptr> feats, int rung, int feat_ind): +DivNode::DivNode(std::array<node_ptr, 2> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if((feats[0]->type() == NODE_TYPE::INV) || (feats[1]->type() == NODE_TYPE::INV)) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.hpp index 7b06b84e83b1a47a9dcb1c26968ae654375c9128..89738715630f6c3046e4c5a5ec7c700360a0db49 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/divide.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class DivNode: public OperatorNode +class DivNode: public OperatorNode<2> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class DivNode: public OperatorNode public: DivNode(); - DivNode(std::vector<node_ptr> feats, int rung, int feat_ind); + DivNode(std::array<node_ptr, 2> feats, int rung, int feat_ind); DivNode(node_ptr feat_1, node_ptr feat_2, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.cpp index c12d2397ac1c84168f6e49ebc091e8fa57bf4dd2..c4691ed9951b48a0da9eb39ad929adaefcb93ac0 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.cpp @@ -3,7 +3,7 @@ ExpNode::ExpNode() {} -ExpNode::ExpNode(std::vector<node_ptr> feats, int rung, int feat_ind): +ExpNode::ExpNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != Unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.hpp index 4903e366c55490298b06b102bb8af7c4c5525153..c35f8ee0c998e6e60d089556ac02e14272e23260 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/exponential.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class ExpNode: public OperatorNode +class ExpNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class ExpNode: public OperatorNode public: ExpNode(); - ExpNode(std::vector<node_ptr> feats, int rung, int feat_ind); + ExpNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); ExpNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.cpp index b8f0e456dfd30f19b71f61c4e027f62acfea645b..d39a8d6a3c1e04069e6c0d64b9cec4c26f7d2209 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.cpp @@ -3,7 +3,7 @@ InvNode::InvNode() {} -InvNode::InvNode(std::vector<node_ptr> feats, int rung, int feat_ind): +InvNode::InvNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if((feats[0]->type() == NODE_TYPE::DIV) || (feats[0]->type() == NODE_TYPE::EXP) || (feats[0]->type() == NODE_TYPE::NEG_EXP)) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.hpp index 8147863dce3db3d49666dc13a229e815916c87e6..8a8f69be48c00560a6b98d39f8f62adf495bed9d 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/inverse.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class InvNode: public OperatorNode +class InvNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class InvNode: public OperatorNode public: InvNode(); - InvNode(std::vector<node_ptr> feats, int rung, int feat_ind); + InvNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); InvNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.cpp index d0af28396c424cf0870f67e980095f583431b249..8d8c3b10e1b11f04f35a37e90a7f21fe732ae3ab 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.cpp @@ -3,7 +3,7 @@ LogNode::LogNode() {} -LogNode::LogNode(std::vector<node_ptr> feats, int rung, int feat_ind): +LogNode::LogNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != Unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.hpp index 864b60c7c69368c877d831086aa82a397e1cc594..5c194abc8a34e3cc90f8fbf1a8b9f8790b25b337 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class LogNode: public OperatorNode +class LogNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class LogNode: public OperatorNode public: LogNode(); - LogNode(std::vector<node_ptr> feats, int rung, int feat_ind); + LogNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); LogNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.cpp index bc0e13faf34eeb8c41a33ac67627e47232afc98f..fa6c8245ba1f754706289b63d1cd216b66fffc4b 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.cpp @@ -3,7 +3,7 @@ MultNode::MultNode() {} -MultNode::MultNode(std::vector<node_ptr> feats, int rung, int feat_ind): +MultNode::MultNode(std::array<node_ptr, 2> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { std::map<std::string, double> div_mult_leaves; diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.hpp index f78a0ed7679013503edbeb990d66a229eeaf0a4f..a25cce6508de33907c257b1d05f5efedc0b3b479 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/multiply.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class MultNode: public OperatorNode +class MultNode: public OperatorNode<2> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class MultNode: public OperatorNode public: MultNode(); - MultNode(std::vector<node_ptr> feats, int rung, int feat_ind); + MultNode(std::array<node_ptr, 2> feats, int rung, int feat_ind); MultNode(node_ptr feat_1, node_ptr feat_2, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.cpp index df28a9e1323bba4c8a871cbed338d44dd6978074..fdf125f2916c4a381ea49e4e99218eced58f63d9 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.cpp @@ -3,7 +3,7 @@ NegExpNode::NegExpNode() {} -NegExpNode::NegExpNode(std::vector<node_ptr> feats, int rung, int feat_ind): +NegExpNode::NegExpNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != Unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.hpp index c7dde942319d4bc0970fba8be818350923216d71..6b6f4f1a1e333ced2b4361e7936ae6ae3f87fd02 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/negative_exponential.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class NegExpNode: public OperatorNode +class NegExpNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class NegExpNode: public OperatorNode public: NegExpNode(); - NegExpNode(std::vector<node_ptr> feats, int rung, int feat_ind); + NegExpNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); NegExpNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.cpp index 3aedd0737f4551f9f106fc5721045e937344cfdc..4c9bbc4bf492ea686ae8ae8acbaadb8f8b8e55e6 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.cpp @@ -3,7 +3,7 @@ SinNode::SinNode() {} -SinNode::SinNode(std::vector<node_ptr> feats, int rung, int feat_ind): +SinNode::SinNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != Unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.hpp index cb606b1032ef75c91e94ef2e87d84fe0b291d0cf..d048df822f3cc9795f6f9459297fd95167039b0a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sin.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class SinNode: public OperatorNode +class SinNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class SinNode: public OperatorNode public: SinNode(); - SinNode(std::vector<node_ptr> feats, int rung, int feat_ind); + SinNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); SinNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.cpp index a74ef6d6e41de4accc5d087ec3d59717268b1c30..5fe889b4d138954feac959bd9a6e41768ce300f9 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.cpp @@ -3,7 +3,7 @@ SixPowNode::SixPowNode() {} -SixPowNode::SixPowNode(std::vector<node_ptr> feats, int rung, int feat_ind): +SixPowNode::SixPowNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if((feats[0]->type() == NODE_TYPE::CBRT) || (feats[0]->type() == NODE_TYPE::SQRT)) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.hpp index 8fb575b4b8ffa585324e1db21fd3b3ff92f93a0e..d21b1b230905afb170c0a7e7af75504d7dc86dde 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/sixth_power.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class SixPowNode: public OperatorNode +class SixPowNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class SixPowNode: public OperatorNode public: SixPowNode(); - SixPowNode(std::vector<node_ptr> feats, int rung, int feat_ind); + SixPowNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); SixPowNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.cpp index 7bfb9c6ef0e47b2e24209a0a4f1b4d1a6da93a1d..2251bddc7408abed7798a6f8267e50cdd922999a 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.cpp @@ -3,7 +3,7 @@ SqNode::SqNode() {} -SqNode::SqNode(std::vector<node_ptr> feats, int rung, int feat_ind): +SqNode::SqNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->type() == NODE_TYPE::SQRT) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.hpp index dc5a7acc532e47998f70292ced14dffc6d1f7b7d..64ecd33a3bf201a367a44f07e77de134babeb1da 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class SqNode: public OperatorNode +class SqNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -15,7 +15,7 @@ class SqNode: public OperatorNode public: SqNode(); - SqNode(std::vector<node_ptr> feats, int rung, int feat_ind); + SqNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); SqNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.cpp index 0f30bb2b1065fd81d2bdfeb86c32068dce7aa8be..fb8241386ce21952547d6d89a0af54f83f5413e0 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.cpp @@ -3,7 +3,7 @@ SqrtNode::SqrtNode() {} -SqrtNode::SqrtNode(std::vector<node_ptr> feats, int rung, int feat_ind): +SqrtNode::SqrtNode(std::array<node_ptr, 1> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->type() == NODE_TYPE::SQRT) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.hpp index 07d2736ef2e544d4136236f588ae1ee616530e6f..ae76c2d2f5e7167277084925f5d5961ccf8ec86b 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/square_root.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class SqrtNode: public OperatorNode +class SqrtNode: public OperatorNode<1> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class SqrtNode: public OperatorNode public: SqrtNode(); - SqrtNode(std::vector<node_ptr> feats, int rung, int feat_ind); + SqrtNode(std::array<node_ptr, 1> feats, int rung, int feat_ind); SqrtNode(node_ptr feat, int rung, int feat_ind); diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.cpp index 0760bc8bd947be1bc09a796c125ed100a8799941..0b98078d000730c4c3f655e18e3b3fd40371e897 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.cpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.cpp @@ -3,7 +3,7 @@ SubNode::SubNode() {} -SubNode::SubNode(std::vector<node_ptr> feats, int rung, int feat_ind): +SubNode::SubNode(std::array<node_ptr, 2> feats, int rung, int feat_ind): OperatorNode(feats, rung, feat_ind) { if(feats[0]->unit() != feats[1]->unit()) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.hpp index 8883fe3e55e768d6821b63581745fb6f4b184a1d..469864a3cb1fb9bed41033a79fc93277f9959306 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/subtract.hpp @@ -3,7 +3,7 @@ #include <feature_creation/node/operator_nodes/OperatorNode.hpp> -class SubNode: public OperatorNode +class SubNode: public OperatorNode<2> { friend class boost::serialization::access; @@ -16,7 +16,7 @@ class SubNode: public OperatorNode public: SubNode(); - SubNode(std::vector<node_ptr> feats, int rung, int feat_ind); + SubNode(std::array<node_ptr, 2> feats, int rung, int feat_ind); SubNode(node_ptr feat_1, node_ptr feat_2, int rung, int feat_ind);