23 #ifndef __KDB_FEATURE_MANAGER_H__
24 #define __KDB_FEATURE_MANAGER_H__
26 #include "services/daal_memory.h"
27 #include "data_management/data_source/data_source.h"
28 #include "data_management/data/data_dictionary.h"
29 #include "data_management/data/numeric_table.h"
30 #include "data_management/data/homogen_numeric_table.h"
36 namespace data_management
45 class KDBFeatureManager
48 KDBFeatureManager() : _errors(
new services::ErrorCollection()) {}
56 void createDictionaryFromTable(
const K& table, DataSourceDictionary *dict)
58 K featureNames = kK(table)[0];
59 K featureData = kK(table)[1];
60 size_t nFeatures = featureNames->n;
62 dict->setNumberOfFeatures( nFeatures );
64 for(
size_t i = 0; i < nFeatures; i++)
66 DataSourceFeature &feature = (*dict)[i];
68 feature.setFeatureName(kS(featureNames)[i]);
70 K column = kK(featureData)[i];
75 feature.setType<
double>();
78 feature.setType<
float>();
80 case(KB):
case(KG):
case(KC):
81 feature.setType<
char>();
84 feature.setType<
short>();
86 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
87 feature.setType<
int>();
90 feature.setType<DAAL_INT64>();
93 _errors->add(services::ErrorKDBTypeUnsupported);
105 void createDictionaryFromList(
const K& lst, DataSourceDictionary *dict)
107 size_t nFeatures = lst->n;
109 dict->setNumberOfFeatures( nFeatures );
111 for(
size_t i = 0; i < nFeatures; i++)
113 DataSourceFeature &feature = (*dict)[i];
117 if (lst->t == 0) curType = kK(lst)[i]->t;
else curType = lst->t;
119 if (curType < 0) curType = -curType;
124 feature.setType<
double>();
127 feature.setType<
float>();
129 case(KB):
case(KG):
case(KC):
130 feature.setType<
char>();
133 feature.setType<
short>();
135 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
136 feature.setType<
int>();
139 feature.setType<DAAL_INT64>();
142 _errors->add(services::ErrorKDBTypeUnsupported);
148 void statementResultsNumericTableFromColumnData(
const K& columnData, NumericTable *nt,
size_t nRows)
150 BlockDescriptor<DAAL_DATA_TYPE> block;
151 nt->getBlockOfRows(0, nRows, writeOnly, block);
152 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
153 size_t nFeatures = nt->getNumberOfColumns();
154 for (
size_t row = 0; row < nRows; row++)
156 for(
size_t col = 0; col < nFeatures; col++)
158 K column = kK(columnData)[col];
162 blockPtr[row * nFeatures + col] = kG(column)[row];
165 blockPtr[row * nFeatures + col] = kG(column)[row];
168 blockPtr[row * nFeatures + col] = kH(column)[row];
170 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
171 blockPtr[row * nFeatures + col] = kI(column)[row];
173 case(KJ):
case(KP):
case(KN):
174 blockPtr[row * nFeatures + col] = kJ(column)[row];
177 blockPtr[row * nFeatures + col] = kE(column)[row];
180 blockPtr[row * nFeatures + col] = kF(column)[row];
183 _errors->add(services::ErrorKDBTypeUnsupported);
188 nt->releaseBlockOfRows(block);
191 void statementResultsNumericTableFromList(
const K& lst, NumericTable *nt,
size_t nRows)
193 BlockDescriptor<DAAL_DATA_TYPE> block;
194 nt->getBlockOfRows(0, nRows, writeOnly, block);
195 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
196 size_t nFeatures = nt->getNumberOfColumns();
197 for (
size_t row = 0; row < nRows; row++)
200 if (lst->t == 0) data = kK(lst)[row];
else data = lst;
201 for(
size_t col = 0; col < nFeatures; col++)
206 blockPtr[row * nFeatures + col] = kG(data)[col];
209 blockPtr[row * nFeatures + col] = kG(data)[col];
212 blockPtr[row * nFeatures + col] = kH(data)[col];
214 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
215 blockPtr[row * nFeatures + col] = kI(data)[col];
217 case(KJ):
case(KP):
case(KN):
218 blockPtr[row * nFeatures + col] = kJ(data)[col];
221 blockPtr[row * nFeatures + col] = kE(data)[col];
224 blockPtr[row * nFeatures + col] = kF(data)[col];
227 _errors->add(services::ErrorKDBTypeUnsupported);
231 if (lst->t == 0) r0(data);
233 nt->releaseBlockOfRows(block);
236 services::SharedPtr<services::ErrorCollection> getErrors()
242 services::SharedPtr<services::ErrorCollection> _errors;
247 using interface1::KDBFeatureManager;
daal::services::ErrorKDBTypeUnsupported
Definition: error_indexes.h:400
daal::data_management::interface1::KDBFeatureManager
Contains KDB-specific commands.
Definition: kdb_feature_manager.h:45
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:163
daal::algorithms::association_rules::data
Definition: apriori_types.h:83
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromList
void createDictionaryFromList(const K &lst, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:105
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:577
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:268
daal::data_management::interface1::DataSourceFeature::setFeatureName
void setFeatureName(const services::String &featureName)
Definition: data_source_dictionary.h:135
daal::data_management::interface1::NumericTable::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: numeric_table.h:654
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromTable
void createDictionaryFromTable(const K &table, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:56
daal::data_management::interface1::DataSourceFeature::setType
void setType()
Definition: data_source_dictionary.h:146
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::BlockDescriptor< DAAL_DATA_TYPE >
daal::data_management::interface1::DenseNumericTableIface::releaseBlockOfRows
virtual services::Status releaseBlockOfRows(BlockDescriptor< double > &block)=0
daal::data_management::interface1::DataSourceFeature
Data structure that describes the Data Source feature.
Definition: data_source_dictionary.h:53
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:71