22 #ifndef __DATA_DICTIONARY_H__
23 #define __DATA_DICTIONARY_H__
25 #include "services/daal_defines.h"
26 #include "services/daal_memory.h"
27 #include "data_management/data/data_serialize.h"
28 #include "data_management/data/data_archive.h"
29 #include "data_management/data/data_utils.h"
33 namespace data_management
48 class NumericTableFeature :
public SerializationIface
51 data_feature_utils::IndexNumType indexType;
52 data_feature_utils::PMMLNumType pmmlType;
53 data_feature_utils::FeatureType featureType;
55 size_t categoryNumber;
63 indexType = data_feature_utils::DAAL_OTHER_T;
64 pmmlType = data_feature_utils::DAAL_GEN_UNKNOWN;
65 featureType = data_feature_utils::DAAL_CONTINUOUS;
73 NumericTableFeature &operator= (
const NumericTableFeature &f)
75 indexType = f.indexType ;
76 pmmlType = f.pmmlType ;
77 featureType = f.featureType ;
78 typeSize = f.typeSize ;
79 categoryNumber = f.categoryNumber;
84 virtual ~NumericTableFeature() {}
94 indexType = data_feature_utils::getIndexNumType<T>();
95 pmmlType = data_feature_utils::getPMMLNumType<T>();
99 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
101 serialImpl<InputDataArchive, false>( arch );
103 return services::Status();
107 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
109 serialImpl<const OutputDataArchive, true>( arch );
111 return services::Status();
115 template<
typename Archive,
bool onDeserialize>
116 services::Status serialImpl( Archive *arch )
118 arch->set( pmmlType );
119 arch->set( featureType );
120 arch->set( typeSize );
121 arch->set( categoryNumber );
122 arch->set( indexType );
124 return services::Status();
127 virtual int getSerializationTag() const DAAL_C11_OVERRIDE
129 return SERIALIZATION_DATAFEATURE_NT_ID;
132 data_feature_utils::IndexNumType getIndexType()
const
139 class DictionaryIface {
157 template<
typename Feature,
int SerializationTag>
158 class DAAL_EXPORT Dictionary :
public SerializationIface,
public DictionaryIface
161 static int serializationTag() {
return SerializationTag; }
162 virtual int getSerializationTag() const DAAL_C11_OVERRIDE {
return serializationTag(); }
170 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual = notEqual ):
171 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
173 if(nfeat) { setNumberOfFeatures(nfeat); }
183 static services::SharedPtr<Dictionary> create(
size_t nfeat, FeaturesEqual featuresEqual = notEqual, services::Status *stat = NULL )
185 DAAL_DEFAULT_CREATE_IMPL_EX(Dictionary, nfeat, featuresEqual);
192 Dictionary(): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
199 static services::SharedPtr<Dictionary> create( services::Status *stat = NULL )
201 DAAL_DEFAULT_CREATE_IMPL(Dictionary);
205 virtual ~Dictionary()
213 services::Status resetDictionary()
221 return services::Status();
228 virtual services::Status setAllFeatures(
const Feature &defaultFeature)
230 if (_featuresEqual == DictionaryIface::equal)
234 _dict[0] = defaultFeature;
239 for(
size_t i = 0 ; i < _nfeat ; i++ )
241 _dict[i] = defaultFeature;
244 return services::Status();
251 template<
typename featureType>
252 services::Status setAllFeatures()
254 Feature defaultFeature;
255 defaultFeature.template setType<featureType>();
256 return setAllFeatures(defaultFeature);
263 virtual services::Status setNumberOfFeatures(
size_t numberOfFeatures)
266 _nfeat = numberOfFeatures;
267 if (_featuresEqual == DictionaryIface::equal)
269 _dict =
new Feature[1];
273 _dict =
new Feature[_nfeat];
275 return services::Status();
282 size_t getNumberOfFeatures()
const
291 FeaturesEqual getFeaturesEqual()
const
293 return _featuresEqual;
301 Feature &operator[](
const size_t idx)
303 if (_featuresEqual == DictionaryIface::equal)
320 services::Status setFeature(
const Feature &feature,
size_t idx)
323 return services::Status(services::ErrorIncorrectNumberOfFeatures);
325 if (_featuresEqual == DictionaryIface::equal)
331 _dict[idx] = feature;
333 return services::Status();
341 services::Status setFeature(
size_t idx)
344 df.template setType<T>();
345 return setFeature(df, idx);
348 services::Status checkDictionary()
const
350 size_t nFeat = _nfeat;
351 if (_featuresEqual == DictionaryIface::equal) nFeat = 1;
353 for (
size_t i = 0; i < nFeat; ++i)
355 if (_dict[i].getIndexType() == data_feature_utils::DAAL_OTHER_T)
357 return services::Status(services::ErrorUndefinedFeature);
360 return services::Status();
368 DAAL_DEPRECATED services::SharedPtr<services::KernelErrorCollection> getErrors()
374 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
376 serialImpl<InputDataArchive, false>( arch );
378 return services::Status();
382 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
384 serialImpl<const OutputDataArchive, true>( arch );
386 return services::Status();
391 template<
typename Archive,
bool onDeserialize>
392 services::Status serialImpl( Archive *arch )
394 arch->segmentHeader();
397 arch->set( _featuresEqual );
401 size_t nfeat = _nfeat;
403 setNumberOfFeatures(nfeat);
408 arch->setObj( _dict, 1 );
412 arch->setObj( _dict, _nfeat );
415 arch->segmentFooter();
417 return services::Status();
422 FeaturesEqual _featuresEqual;
424 services::SharedPtr<services::KernelErrorCollection> _errors;
426 Dictionary(
size_t nfeat, FeaturesEqual featuresEqual, services::Status &st ):
427 _nfeat(0), _featuresEqual(featuresEqual), _dict(0), _errors(new services::KernelErrorCollection())
429 if(nfeat) { st |= setNumberOfFeatures(nfeat); }
432 Dictionary(services::Status &st): _nfeat(0), _dict(0), _featuresEqual(DictionaryIface::notEqual), _errors(new services::KernelErrorCollection()) {}
434 typedef Dictionary<NumericTableFeature, SERIALIZATION_DATADICTIONARY_NT_ID> NumericTableDictionary;
435 typedef services::SharedPtr<NumericTableDictionary> NumericTableDictionaryPtr;
436 typedef services::SharedPtr<NumericTableFeature> NumericTableFeaturePtr;
440 using interface1::NumericTableFeature;
441 using interface1::NumericTableFeaturePtr;
442 using interface1::DictionaryIface;
443 using interface1::Dictionary;
444 using interface1::NumericTableDictionary;
445 using interface1::NumericTableDictionaryPtr;
daal::data_management::interface1::Dictionary::resetDictionary
services::Status resetDictionary()
Definition: data_dictionary.h:213
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::NumericTableFeature::NumericTableFeature
NumericTableFeature()
Definition: data_dictionary.h:61
daal::data_management::interface1::DictionaryIface::notEqual
Definition: data_dictionary.h:147
daal::data_management::interface1::Dictionary::operator[]
Feature & operator[](const size_t idx)
Definition: data_dictionary.h:301
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(services::Status *stat=NULL)
Definition: data_dictionary.h:199
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:70
daal::data_management::interface1::Dictionary::getErrors
DAAL_DEPRECATED services::SharedPtr< services::KernelErrorCollection > getErrors()
Definition: data_dictionary.h:368
daal::services::SerializationTag
Definition: error_indexes.h:57
daal::data_management::interface1::Dictionary::getNumberOfFeatures
size_t getNumberOfFeatures() const
Definition: data_dictionary.h:282
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(size_t idx)
Definition: data_dictionary.h:341
daal::data_management::interface1::NumericTableFeature::operator=
NumericTableFeature & operator=(const NumericTableFeature &f)
Definition: data_dictionary.h:73
daal::data_management::interface1::Dictionary::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:162
daal::data_management::interface1::NumericTableFeature::getSerializationTag
virtual int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: data_dictionary.h:127
daal::data_management::interface1::Dictionary::setNumberOfFeatures
virtual services::Status setNumberOfFeatures(size_t numberOfFeatures)
Definition: data_dictionary.h:263
daal::data_management::interface1::Dictionary::setAllFeatures
services::Status setAllFeatures()
Definition: data_dictionary.h:252
daal::data_management::interface1::Dictionary::Dictionary
Dictionary(size_t nfeat, FeaturesEqual featuresEqual=notEqual)
Definition: data_dictionary.h:170
daal::data_management::interface1::Dictionary::setFeature
services::Status setFeature(const Feature &feature, size_t idx)
Adds a feature to a data dictionary.
Definition: data_dictionary.h:320
daal::data_management::interface1::DictionaryIface::FeaturesEqual
FeaturesEqual
Enumeration to specify whether the Data Dictionary contains equal features.
Definition: data_dictionary.h:145
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:91
daal::data_management::interface1::Dictionary::create
static services::SharedPtr< Dictionary > create(size_t nfeat, FeaturesEqual featuresEqual=notEqual, services::Status *stat=NULL)
Definition: data_dictionary.h:183
daal::services::ErrorUndefinedFeature
Definition: error_indexes.h:140
daal::data_management::interface1::Dictionary::setAllFeatures
virtual services::Status setAllFeatures(const Feature &defaultFeature)
Definition: data_dictionary.h:228
daal::data_management::interface1::Dictionary::Dictionary
Dictionary()
Definition: data_dictionary.h:192
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:50
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:48
daal::data_management::interface1::Dictionary::getFeaturesEqual
FeaturesEqual getFeaturesEqual() const
Definition: data_dictionary.h:291
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:158