| Signature | Description | Parameters |
|---|---|---|
template<comparable T> StlVecType<char> peaks(const char *col_name, size_type n = 1) const; |
This function determines if each item in the named column is a peak. A peak data point is bigger than n data points before and after it. It returns a vector of chars with the same size as the named column. A 0 value means the data point is not a peak. 1 means it is. The first and last n values of the returned vector are always 0; NOTE: StlVecType is just a std::vector with the applicable allocator for the DataFrame. For example, if you have declared the DataFrame to allocate memory on a particular boundary, then StlVecType is std::vector with an allocator that does so. Otherwise it is just a default std::vector. |
T: Type of the named column T must have the comparison operators (== != > < >= <=) well defined col_name: Name of the column n: Number of periods to account for before and after. It is defaulted to 1 |
template<comparable T> StlVecType<char> valleys(const char *col_name, size_type n = 1) const; |
This function determines if each item in the named column is a valley. A valley data point is smaller than n data points before and after it. It returns a vector of chars with the same size as the named column. A 0 value means the data point is not a valley. 1 means it is. The first and last n values of the returned vector are always 0; NOTE: StlVecType is just a std::vector with the applicable allocator for the DataFrame. For example, if you have declared the DataFrame to allocate memory on a particular boundary, then StlVecType is std::vector with an allocator that does so. Otherwise it is just a default std::vector. |
T: Type of the named column T must have the comparison operators (== != > < >= <=) well defined col_name: Name of the column n: Number of periods to account for before and after. It is defaulted to 1 |
static void test_peaks() { std::cout << "\nTesting peaks( ) ..." << std::endl; MyDataFrame df; StlVecType<unsigned long> idxvec = { 1UL, 2UL, 3UL, 10UL, 5UL, 7UL, 8UL, 12UL, 9UL, 12UL, 10UL, 13UL, 10UL, 15UL, 14UL }; StlVecType<double> dblvec = { 0.0, 15.0, -14.0, 2.0, 1.0, 12.0, 11.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 9.0, 10.0}; StlVecType<double> dblvec2 = { 100.0, 101.0, 102.0, 103.0, 104.0, 103.9, 106.55, 106.34, 1.8, 111.0, 112.0, 111.5, 114.0, 115.0, 116.0}; StlVecType<std::string> strvec = { "zz", "bb", "cc", "ww", "ee", "ff", "gg", "hh", "ii", "jj", "kk", "ll", "mm", "nn", "oo" }; df.load_data(std::move(idxvec), std::make_pair("dbl_col", dblvec), std::make_pair("dbl_col_2", dblvec2), std::make_pair("str_col", strvec)); const auto res1 = df.peaks<double>("dbl_col_2"); { StlVecType<char> out_res = { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }; assert(res1 == out_res); } const auto res2 = df.peaks<unsigned long>(DF_INDEX_COL_NAME); { StlVecType<char> out_res = { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; assert(res2 == out_res); } }
// ---------------------------------------------------------------------------- static void test_valleys() { std::cout << "\nTesting valleys( ) ..." << std::endl; MyDataFrame df; StlVecType<unsigned long> idxvec = { 1UL, 2UL, 3UL, 10UL, 5UL, 7UL, 8UL, 12UL, 9UL, 12UL, 10UL, 13UL, 10UL, 15UL, 14UL }; StlVecType<double> dblvec = { 0.0, 15.0, -14.0, 2.0, 1.0, 12.0, 11.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 9.0, 10.0}; StlVecType<double> dblvec2 = { 100.0, 101.0, 102.0, 103.0, 104.0, 103.9, 106.55, 106.34, 1.8, 111.0, 112.0, 111.5, 114.0, 115.0, 116.0}; StlVecType<std::string> strvec = { "zz", "bb", "cc", "ww", "ee", "ff", "gg", "hh", "ii", "jj", "kk", "ll", "mm", "nn", "oo" }; df.load_data(std::move(idxvec), std::make_pair("dbl_col", dblvec), std::make_pair("dbl_col_2", dblvec2), std::make_pair("str_col", strvec)); df.load_column("dbl_col_2_mask_1", df.valleys<double>("dbl_col_2")); df.load_column("dbl_col_2_mask_2", df.valleys<double>("dbl_col_2", 2)); df.load_column("dbl_col_2_mask_3", df.valleys<double>("dbl_col_2", 3)); { StlVecType<char> out_res1 = { 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0 }; StlVecType<char> out_res2 = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; StlVecType<char> out_res3 = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; assert((df.get_column<char>("dbl_col_2_mask_1") == out_res1)); assert((df.get_column<char>("dbl_col_2_mask_2") == out_res2)); assert((df.get_column<char>("dbl_col_2_mask_3") == out_res3)); } df.load_column("index_mask", df.valleys<double>(DF_INDEX_COL_NAME)); { StlVecType<char> out_res = { 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0 }; assert((df.get_column<char>("index_mask") == out_res)); } }