21 #ifndef __KDB_FEATURE_MANAGER_H__
22 #define __KDB_FEATURE_MANAGER_H__
24 #include "services/daal_memory.h"
25 #include "data_management/data_source/data_source.h"
26 #include "data_management/data/data_dictionary.h"
27 #include "data_management/data/numeric_table.h"
28 #include "data_management/data/homogen_numeric_table.h"
34 namespace data_management
43 class KDBFeatureManager
46 KDBFeatureManager() : _errors(
new services::ErrorCollection()) {}
54 void createDictionaryFromTable(
const K& table, DataSourceDictionary *dict)
56 K featureNames = kK(table)[0];
57 K featureData = kK(table)[1];
58 size_t nFeatures = featureNames->n;
60 dict->setNumberOfFeatures( nFeatures );
62 for(
size_t i = 0; i < nFeatures; i++)
64 DataSourceFeature &feature = (*dict)[i];
66 feature.setFeatureName(kS(featureNames)[i]);
68 K column = kK(featureData)[i];
73 feature.setType<
double>();
76 feature.setType<
float>();
78 case(KB):
case(KG):
case(KC):
79 feature.setType<
char>();
82 feature.setType<
short>();
84 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
85 feature.setType<
int>();
88 feature.setType<DAAL_INT64>();
91 _errors->add(services::ErrorKDBTypeUnsupported);
103 void createDictionaryFromList(
const K& lst, DataSourceDictionary *dict)
105 size_t nFeatures = lst->n;
107 dict->setNumberOfFeatures( nFeatures );
109 for(
size_t i = 0; i < nFeatures; i++)
111 DataSourceFeature &feature = (*dict)[i];
115 if (lst->t == 0) curType = kK(lst)[i]->t;
else curType = lst->t;
117 if (curType < 0) curType = -curType;
122 feature.setType<
double>();
125 feature.setType<
float>();
127 case(KB):
case(KG):
case(KC):
128 feature.setType<
char>();
131 feature.setType<
short>();
133 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
134 feature.setType<
int>();
137 feature.setType<DAAL_INT64>();
140 _errors->add(services::ErrorKDBTypeUnsupported);
146 void statementResultsNumericTableFromColumnData(
const K& columnData, NumericTable *nt,
size_t nRows)
148 BlockDescriptor<DAAL_DATA_TYPE> block;
149 nt->getBlockOfRows(0, nRows, writeOnly, block);
150 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
151 size_t nFeatures = nt->getNumberOfColumns();
152 for (
size_t row = 0; row < nRows; row++)
154 for(
size_t col = 0; col < nFeatures; col++)
156 K column = kK(columnData)[col];
160 blockPtr[row * nFeatures + col] = kG(column)[row];
163 blockPtr[row * nFeatures + col] = kG(column)[row];
166 blockPtr[row * nFeatures + col] = kH(column)[row];
168 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
169 blockPtr[row * nFeatures + col] = kI(column)[row];
171 case(KJ):
case(KP):
case(KN):
172 blockPtr[row * nFeatures + col] = kJ(column)[row];
175 blockPtr[row * nFeatures + col] = kE(column)[row];
178 blockPtr[row * nFeatures + col] = kF(column)[row];
181 _errors->add(services::ErrorKDBTypeUnsupported);
186 nt->releaseBlockOfRows(block);
189 void statementResultsNumericTableFromList(
const K& lst, NumericTable *nt,
size_t nRows)
191 BlockDescriptor<DAAL_DATA_TYPE> block;
192 nt->getBlockOfRows(0, nRows, writeOnly, block);
193 DAAL_DATA_TYPE *blockPtr = block.getBlockPtr();
194 size_t nFeatures = nt->getNumberOfColumns();
195 for (
size_t row = 0; row < nRows; row++)
198 if (lst->t == 0) data = kK(lst)[row];
else data = lst;
199 for(
size_t col = 0; col < nFeatures; col++)
204 blockPtr[row * nFeatures + col] = kG(data)[col];
207 blockPtr[row * nFeatures + col] = kG(data)[col];
210 blockPtr[row * nFeatures + col] = kH(data)[col];
212 case(KI):
case(KM):
case(KD):
case(KU):
case(KV):
case(KT):
213 blockPtr[row * nFeatures + col] = kI(data)[col];
215 case(KJ):
case(KP):
case(KN):
216 blockPtr[row * nFeatures + col] = kJ(data)[col];
219 blockPtr[row * nFeatures + col] = kE(data)[col];
222 blockPtr[row * nFeatures + col] = kF(data)[col];
225 _errors->add(services::ErrorKDBTypeUnsupported);
229 if (lst->t == 0) r0(data);
231 nt->releaseBlockOfRows(block);
234 services::SharedPtr<services::ErrorCollection> getErrors()
240 services::SharedPtr<services::ErrorCollection> _errors;
245 using interface1::KDBFeatureManager;
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:69
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::DataSourceFeature::setFeatureName
void setFeatureName(const services::String &featureName)
Definition: data_source_dictionary.h:130
daal::data_management::interface1::DataSourceFeature::setType
void setType()
Definition: data_source_dictionary.h:141
daal::data_management::interface1::DataSourceFeature
Data structure that describes the Data Source feature.
Definition: data_source_dictionary.h:51
daal::data_management::interface1::KDBFeatureManager
Contains KDB-specific commands.
Definition: kdb_feature_manager.h:43
daal::data_management::interface1::NumericTable::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: numeric_table.h:651
daal::data_management::interface1::KDBFeatureManager::createDictionaryFromList
void createDictionaryFromList(const K &lst, DataSourceDictionary *dict)
Definition: kdb_feature_manager.h:103
daal::algorithms::association_rules::data
Definition: apriori_types.h:81
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:574
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:266
daal::services::ErrorKDBTypeUnsupported
Definition: error_indexes.h:388
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:54
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:161