47 #ifndef __KDB_FEATURE_MANAGER_H__
48 #define __KDB_FEATURE_MANAGER_H__
51 #include "services/daal_memory.h"
52 #include "data_management/data_source/data_source.h"
53 #include "data_management/data/data_dictionary.h"
54 #include "data_management/data/numeric_table.h"
55 #include "data_management/data/homogen_numeric_table.h"
63 namespace data_management
72 class KDBFeatureManager
75 KDBFeatureManager() : _errors(
new services::ErrorCollection()) {}
83 void createDictionaryFromTable(
const K& table, DataSourceDictionary *dict)
85 K featureNames = kK(table)[0];
86 K featureData = kK(table)[1];
87 size_t nFeatures = featureNames->n;
89 dict->setNumberOfFeatures( nFeatures );
91 for(
size_t i = 0; i < nFeatures; i++)
93 DataSourceFeature &feature = (*dict)[i];
95 feature.setFeatureName(kS(featureNames)[i]);
97 K column = kK(featureData)[i];
102 feature.setType<
double>();
105 feature.setType<
float>();
107 case(KB):
case(KG):
case(KC):
108 feature.setType<
char>();
111 feature.setType<
short>();
113 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
114 feature.setType<
int>();
117 feature.setType<DAAL_INT64>();
120 _errors->add(services::ErrorKDBTypeUnsupported);
132 void createDictionaryFromList(
const K& lst, DataSourceDictionary *dict)
134 size_t nFeatures = lst->n;
136 dict->setNumberOfFeatures( nFeatures );
138 for(
size_t i = 0; i < nFeatures; i++)
140 DataSourceFeature &feature = (*dict)[i];
144 if (lst->t == 0) curType = kK(lst)[i]->t;
else curType = lst->t;
146 if (curType < 0) curType = -curType;
151 feature.setType<
double>();
154 feature.setType<
float>();
156 case(KB):
case(KG):
case(KC):
157 feature.setType<
char>();
160 feature.setType<
short>();
162 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
163 feature.setType<
int>();
166 feature.setType<DAAL_INT64>();
169 _errors->add(services::ErrorKDBTypeUnsupported);
175 void statementResultsNumericTableFromColumnData(
const K& columnData, NumericTable *nt,
size_t nRows)
177 BlockDescriptor<DAAL_DATA_TYPE> block;
178 nt->getBlockOfRows(0, nRows, writeOnly, block);
179 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
180 size_t nFeatures = nt->getNumberOfColumns();
181 for (
size_t row = 0; row < nRows; row++)
183 for(
size_t col = 0; col < nFeatures; col++)
185 K column = kK(columnData)[col];
189 blockPtr[row * nFeatures + col] = kG(column)[row];
192 blockPtr[row * nFeatures + col] = kG(column)[row];
195 blockPtr[row * nFeatures + col] = kH(column)[row];
197 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
198 blockPtr[row * nFeatures + col] = kI(column)[row];
200 case(KJ):
case(KP):
case(KN):
201 blockPtr[row * nFeatures + col] = kJ(column)[row];
204 blockPtr[row * nFeatures + col] = kE(column)[row];
207 blockPtr[row * nFeatures + col] = kF(column)[row];
210 _errors->add(services::ErrorKDBTypeUnsupported);
215 nt->releaseBlockOfRows(block);
218 void statementResultsNumericTableFromList(
const K& lst, NumericTable *nt,
size_t nRows)
220 BlockDescriptor<DAAL_DATA_TYPE> block;
221 nt->getBlockOfRows(0, nRows, writeOnly, block);
222 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
223 size_t nFeatures = nt->getNumberOfColumns();
224 for (
size_t row = 0; row < nRows; row++)
227 if (lst->t == 0) data = kK(lst)[row];
else data = lst;
228 for(
size_t col = 0; col < nFeatures; col++)
233 blockPtr[row * nFeatures + col] = kG(data)[col];
236 blockPtr[row * nFeatures + col] = kG(data)[col];
239 blockPtr[row * nFeatures + col] = kH(data)[col];
241 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
242 blockPtr[row * nFeatures + col] = kI(data)[col];
244 case(KJ):
case(KP):
case(KN):
245 blockPtr[row * nFeatures + col] = kJ(data)[col];
248 blockPtr[row * nFeatures + col] = kE(data)[col];
251 blockPtr[row * nFeatures + col] = kF(data)[col];
254 _errors->add(services::ErrorKDBTypeUnsupported);
258 if (lst->t == 0) r0(data);
260 nt->releaseBlockOfRows(block);
263 services::SharedPtr<services::ErrorCollection> getErrors()
269 services::SharedPtr<services::ErrorCollection> _errors;
274 using interface1::KDBFeatureManager;
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:95
daal
Definition: algorithm_base_common.h:57
daal::data_management::interface1::DataSourceFeature::setType
void setType()
Definition: data_source_dictionary.h:154
daal::data_management::interface1::DataSourceFeature
Data structure that describes the Data Source feature.
Definition: data_source_dictionary.h:75
daal::data_management::interface1::KDBFeatureManager
Contains KDB-specific commands.
Definition: kdb_feature_manager.h:72
daal::data_management::interface1::NumericTable::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: numeric_table.h:677
daal::data_management::interface1::DataSourceFeature::setFeatureName
void setFeatureName(const std::string &featureName)
Definition: data_source_dictionary.h:138
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromList
void createDictionaryFromList(const K &lst, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:132
daal::algorithms::association_rules::data
Definition: apriori_types.h:107
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:600
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:289
daal::services::ErrorKDBTypeUnsupported
Definition: error_indexes.h:402
daal::data_management::interface1::BlockDescriptor< DAAL_DATA_TYPE >
daal::data_management::interface1::DenseNumericTableIface::releaseBlockOfRows
virtual services::Status releaseBlockOfRows(BlockDescriptor< double > &block)=0
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromTable
void createDictionaryFromTable(const K &table, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:83
daal::data_management::interface1::DenseNumericTableIface::getBlockOfRows
virtual services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< double > &block)=0
daal::data_management::interface1::Dictionary
Class that represents a dictionary of a data set and provides methods to work with the data dictionar...
Definition: data_dictionary.h:184