47 #ifndef __KDB_FEATURE_MANAGER_H__ 48 #define __KDB_FEATURE_MANAGER_H__ 50 #include "services/daal_memory.h" 51 #include "data_management/data_source/data_source.h" 52 #include "data_management/data/data_dictionary.h" 53 #include "data_management/data/numeric_table.h" 54 #include "data_management/data/homogen_numeric_table.h" 60 namespace data_management
69 class KDBFeatureManager
72 KDBFeatureManager() : _errors(
new services::ErrorCollection()) {}
80 void createDictionaryFromTable(
const K& table, DataSourceDictionary *dict)
82 K featureNames = kK(table)[0];
83 K featureData = kK(table)[1];
84 size_t nFeatures = featureNames->n;
86 dict->setNumberOfFeatures( nFeatures );
88 for(
size_t i = 0; i < nFeatures; i++)
90 DataSourceFeature &feature = (*dict)[i];
92 feature.setFeatureName(kS(featureNames)[i]);
94 K column = kK(featureData)[i];
99 feature.setType<
double>();
102 feature.setType<
float>();
104 case(KB):
case(KG):
case(KC):
105 feature.setType<
char>();
108 feature.setType<
short>();
110 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
111 feature.setType<
int>();
114 feature.setType<DAAL_INT64>();
117 _errors->add(services::ErrorKDBTypeUnsupported);
129 void createDictionaryFromList(
const K& lst, DataSourceDictionary *dict)
131 size_t nFeatures = lst->n;
133 dict->setNumberOfFeatures( nFeatures );
135 for(
size_t i = 0; i < nFeatures; i++)
137 DataSourceFeature &feature = (*dict)[i];
141 if (lst->t == 0) curType = kK(lst)[i]->t;
else curType = lst->t;
143 if (curType < 0) curType = -curType;
148 feature.setType<
double>();
151 feature.setType<
float>();
153 case(KB):
case(KG):
case(KC):
154 feature.setType<
char>();
157 feature.setType<
short>();
159 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
160 feature.setType<
int>();
163 feature.setType<DAAL_INT64>();
166 _errors->add(services::ErrorKDBTypeUnsupported);
172 void statementResultsNumericTableFromColumnData(
const K& columnData, NumericTable *nt,
size_t nRows)
174 BlockDescriptor<DAAL_DATA_TYPE> block;
175 nt->getBlockOfRows(0, nRows, writeOnly, block);
176 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
177 size_t nFeatures = nt->getNumberOfColumns();
178 for (
size_t row = 0; row < nRows; row++)
180 for(
size_t col = 0; col < nFeatures; col++)
182 K column = kK(columnData)[col];
186 blockPtr[row * nFeatures + col] = kG(column)[row];
189 blockPtr[row * nFeatures + col] = kG(column)[row];
192 blockPtr[row * nFeatures + col] = kH(column)[row];
194 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
195 blockPtr[row * nFeatures + col] = kI(column)[row];
197 case(KJ):
case(KP):
case(KN):
198 blockPtr[row * nFeatures + col] = kJ(column)[row];
201 blockPtr[row * nFeatures + col] = kE(column)[row];
204 blockPtr[row * nFeatures + col] = kF(column)[row];
207 _errors->add(services::ErrorKDBTypeUnsupported);
212 nt->releaseBlockOfRows(block);
215 void statementResultsNumericTableFromList(
const K& lst, NumericTable *nt,
size_t nRows)
217 BlockDescriptor<DAAL_DATA_TYPE> block;
218 nt->getBlockOfRows(0, nRows, writeOnly, block);
219 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
220 size_t nFeatures = nt->getNumberOfColumns();
221 for (
size_t row = 0; row < nRows; row++)
224 if (lst->t == 0) data = kK(lst)[row];
else data = lst;
225 for(
size_t col = 0; col < nFeatures; col++)
230 blockPtr[row * nFeatures + col] = kG(data)[col];
233 blockPtr[row * nFeatures + col] = kG(data)[col];
236 blockPtr[row * nFeatures + col] = kH(data)[col];
238 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
239 blockPtr[row * nFeatures + col] = kI(data)[col];
241 case(KJ):
case(KP):
case(KN):
242 blockPtr[row * nFeatures + col] = kJ(data)[col];
245 blockPtr[row * nFeatures + col] = kE(data)[col];
248 blockPtr[row * nFeatures + col] = kF(data)[col];
251 _errors->add(services::ErrorKDBTypeUnsupported);
255 if (lst->t == 0) r0(data);
257 nt->releaseBlockOfRows(block);
260 services::SharedPtr<services::ErrorCollection> getErrors()
266 services::SharedPtr<services::ErrorCollection> _errors;
271 using interface1::KDBFeatureManager;
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:69
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:95
daal::data_management::interface1::DataSourceFeature::setFeatureName
void setFeatureName(const std::string &featureName)
Definition: data_source_dictionary.h:138
daal::services::interface1::ErrorCollection
Class that represents an error collection.
Definition: error_handling.h:338
daal::services::interface1::SharedPtr
Shared pointer that retains shared ownership of an object through a pointer. Several SharedPtr object...
Definition: daal_shared_ptr.h:187
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromList
void createDictionaryFromList(const K &lst, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:129
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:409
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::NumericTable::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: numeric_table.h:677
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromTable
void createDictionaryFromTable(const K &table, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:80
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